Was ist .NET?

Alles .NET in der Softwareentwicklung, oder was?

Was ist denn .NET und wozu brauche ich das eigentlich?

.NET ist ganz nüchtern betrachtet ein Oberbegriff für verschiedene Programmier-Plattformen, die mal ursprünglich von Microsoft Ende der 1990er entwickelt wurden – allerdings nicht der Grund für die vielen Weltuntergangstheorien waren. Bevor Sie mir jetzt aber einschlafen, weil Sie denken „OK. Also so ein technisches Entwickler-Ding.“, sollten Sie noch ein paar Dinge bedenken: .NET ist eine der wichtigsten Basis-Technologien, wenn es um individuelle Software-Lösungen oder Softwareentwicklung geht und kann damit auch einen erheblichen – aus unserer Sicht positiven – technischen, aber auch organisatorischen und betriebswirtschaftlichen Einfluss auf Ihr nächstes Softwareentwicklungsprojekt haben. Vielleicht hat schon mal ein Softwareentwickler etwas von .NET gemurmelt. Vielleicht stehen Sie auch kurz vor dem Start eines Softwareentwicklungsprojektes und alle warten mit leuchtenden Kinderaugen auf Ihre Entscheidung mit welcher Technologie nun entwickelt werden soll, oder Sie fragen sich einfach „.NET – Was ist das überhaupt?“. Für diese Fälle haben wir eine kleine Übersicht erstellt: 

  • Begriffserklärung, Aufbau und weitere Grundlagen: Wie der Investor Warren Buffett schon sagt: „Investiere nur in eine Aktie, deren Geschäft du auch verstehst.“ Das gilt natürlich auch für Technologien: Will man diese gewinnbringend für sein Projekt nutzen, sollte man zumindest ein paar Basics kennen.
  • Einsatzgebiete: Was kann ich alles mit .NET entwickeln?
  • Marktübersicht: Wer entwickelt eigentlich mit .NET, wie „beliebt“ ist die Programmier-Plattform – kurz ist .NET eine gute Investition?

.NET alle wichtigen Grundlagen

Fangen wir mal ganz einfach an

.NET ist im engeren Sinne ganz einfach gesagt ein Programm, ohne das bestimmte andere Programme nicht funktionieren. Das sind vornehmlich Windows-Programme, z.B. Excel-Plugins oder interne Software-Lösungen, die speziell für Ihr Unternehmen entwickelt wurden. Fragen Sie zum Spaß einfach mal Ihren Admin, der kann Ihnen das genau sagen. Aber auch große Webseiten, wie Stackoverflow oder das Azure Portal werden damit betrieben. Dieses Programm können Sie einfach als sogenanntes Windows-Feature aktivieren oder Sie downloaden und installieren es einfach. Und warum gibt es diese Abhängigkeit überhaupt? Ganz einfach: Softwareentwickler sind faul und nutzen gerne Dinge, die schon fertig sind. Wollen Sie ein Programm für Windows, Mac oder Linux entwickeln, geht das mit .NET, da hier schon jede Menge nützliche Funktionen drin sind, die man so braucht: 

  • Bibliotheken für Datei-Zugriff, grafische Oberflächen, Netzwerk-Verbindungen und mehr
  • Eine Laufzeitumgebung (die sogenannte Common Language Runtime – kurz CLR), also eine Komponente, die dafür sorgt, dass Nullen und Einsen sich auch bewegen und quicklebendig am Bildschirm erscheinen. Stellen Sie sich das am besten wie einen kleinen Computer im Computer vor.

Deshalb wird .NET auch als Software- bzw. Programmier-Plattform bezeichnet. Es gibt also gute Gründe für einen Entwickler, so eine Softwareplattform zu nutzen. Aber auch als IT-Verantwortlicher oder Manager kommen Sie auf Ihre Kosten. 

.NET das Software-Plattform-Dingens 

Mit ein paar Bibliotheken alleine und einer Laufzeitumgebung können Sie zwar schon einige Programme zum Laufen bringen, so richtig Spaß macht die Softwareentwicklung damit aber noch nicht. Deshalb kann man im weiteren Sinne auch noch folgende Komponenten zu .NET zählen: 

  • Programmiersprachen: Mit C#, F# oder Visual Basic.NET können mit verschiedenen Werkzeugen Programme für .NET geschrieben werden.
  • Einige Compiler, die schlussendlich dafür sorgen, dass aus dem komischen Text (Quellcode), der in C#, F# oder Visual Basic.NET geschrieben wird, ein richtiges Programm entsteht, auf das man klickt und dann (hoffentlich) irgendetwas passiert. Das müssen wir uns nachher nochmal genauer anschauen.
  • Da alles seine Ordnung haben muss, gibt es für die wichtigsten Bestandteile auch internationale Standards, die in der Common Language Infrastructure-Spezifikation als Ecma-Standard zusammengefasst wurden.
  • Ein riesiges Ökosystem aus Herstellern, Entwicklern und Werkzeugen, dass für immer neue Abwechslung sorgt und den Funktionsumfang wachsen lässt.  

Und wie bekomme Ich jetzt mein Programm, Herr Softwareentwickler? 

Ganz schön groß dieses .NET, oder? Der riesige Funktionsumfang ist zum Glück nicht für die Katz. Am Ende können für alle erdenklichen Betriebssysteme alle erdenklichen Programme erstellt werden. Und das passiert (fast) unabhängig davon, was Sie entwickeln, wie folgt: 

  • Entwickler nimmt sich eine Tasse heißen Kaffee und ein Stück Pizza vom Vortag
  • Heißer Kaffee und die kalte Pizza werden zu Quellcode, z.B. C#, F# oder Visual Basic.NET verstoffwechselt
  • Mit Hilfe des jeweiligen Compilers, z.B. dem C#-Compiler (exe), wird sogenannter Intermediate Language Code (IL-Code) in Form von Assemblies erzeugt. Der entsteht übrigens unabhängig vom Betriebssystem und wird von allen Common Language Runtime-Varianten verstanden.
  • Der sogenannte Just-In-Time-Compiler übersetzt kurz vorm Start Ihres Programms alles in prozessorspezifischen Maschinencode (Native Code) und die Rakete hebt ab – puh gerade noch rechtzeitig!

So! Und hier fängt es auch an, spannend zu werden. Aber alles der Reihe nach. Erstens werden einige jetzt enttäuscht sein, dass aus C# streng genommen gar kein richtiges Programm, sondern nur halbgares Byte-Kauderwelsch (IL-Code) wird. Die meiste Arbeit scheint eigentlich dieser Just-In-Time-Compiler (Jitter) aus der Laufzeitumgebung zu machen – ein richtiges Arbeitstier! Heißt aber auch: Wenn ich diesen IL-Code irgendwo anders hin verfrachte, brauche ich nur den Jitter. Der wird dann einfach vor den Karren gespannt und der Wagen rollt los. Heißt auch: Ich bezahle meinen Softwareentwickler einmal und der Code – äh der IL-Code – läuft dann im Kern auf allen Betriebssystemen (Windows, Linux, OS X, Android, iOS). Bekomme fünf zum Preis von einem. OK. Zugegeben: Im Detail stimmt das streng genommen nur für etwa 80% Prozent des Codes. Aber immerhin! Klingt auf jeden Fall nach einem guten Deal. Das Konzept hat aber noch weitere Vorteile: 

  • Sprachunabhängigkeit: Es können beliebig viele Programmiersprachen entwickelt werden. Solange am Ende Intermediate Language herauskommt, ist die Welt in Ordnung. Der Entwickler kann sich einfach seine Lieblings-Programmiersprache aus C#, VB.NET, F#, C++ und noch einigen anderen Programmiersprachen aussuchen. Und Sie können Ihre Entwickler damit aus einem viel größeren Markt rekrutieren.
  • Performance: Der Just-In-Time-Compiler übersetzt den IL-Code kurz vorm Programm-Start in einem Rutsch – das merken Sie in der Regel überhaupt nicht! Alternativ könnte der Softwareentwickler seinen Code auch gleich zu prozessor-spezifischen Maschinencode kompilieren (.NET Native). Dann bräuchten Sie aber wieder für jeden Prozessor-Typen ein anderes Programm – wer will sich damit schon beschäftigen! Oder Sie lassen den Code gemächlich als Text Zeile für Zeile interpretieren, wie es im Softwareentwickler-Jargon heißt. Viele Skript-Sprachen wie PHP oder Node.js (JavaScript) basieren auf diesem Konzept. Die sind aber in vielen Fällen auch langsamer als .NET.
  • Investitionssicherheit: Wenn man zwecks Softwareentwicklungs-Projekt seine Programmier-Athleten im Keller einsperrt, weiß man nie, was die dort treiben. Neue Betriebssysteme, neue Prozessoren oder gar komplett neue Geräte-Kategorien können den Markt ganz schön aufwirbeln. Die .NET-Community sorgt dafür, dass es auch für Ihren neuen Liebling eine entsprechende Laufzeitumgebung gibt. So gab es für das Wearable-Betriebssystem Tizen von Samsung auch gleich passend Tizen .NET hinterher. Was für ein Service!

Jedem Software-Tierchen sein .NET-Pläsierchen

.NET und seine Varianten

Auch Ihnen wurde sicherlich als Kind das ein oder andere Märchen erzählt: Vom unerschöpflichen Gries-Töpfchen, vom Gold-Esel, vom Tischlein-Deck-Dich. Ja. Ja. Wenig machen und viel bekommen! Das kennen wir und in der Softwareentwicklung erzählt man sich das Märchen von der Plattformunabhängigkeit durch Java und .NET. Schreibe einmal Code und erhalte ein Programm für unendlich viele Betriebssysteme. Ganz so weit ist man aber noch nicht! Damit aber die wichtigsten Kernfunktionen von .NET überall mit hingenommen werden können und man zumindest den Schein vom Softwareentwicklungs-Bullerbü wahrt, hat man dafür gesorgt, dass es für die meisten Betriebssysteme eine .NET-Laufzeitumgebung gibt, in der fröhlich IL-Code haust. Die wichtigsten Vertreterinnen in dieser Runde sind: 

  • .NET Framework: Das gute alte klassische .NET. Mit dieser Software-Plattform kann die komplette Power von Windows genutzt werden. In der Softwareentwicklung ist es vor allem bekannt für fenster-reiche Desktop-Anwendungen mit Windows-Forms oder WPF. Aber auch Webanwendungen mit ASP.NET MVC, Web Forms und Web API waren damals schon ein Renner.
  • Mono: Früher gab es nur das .NET Framework – Sie erinnern sich: das Windows-Ding. Weil aber einige schon damals nicht genug von .NET bekommen konnten, wurde die Mono-Runtime entwickelt. Heute ist sie das Kernstück von Xamarin in Form von Mono für Android und iOS, tvOS, watchOS, … ich glaube, Sie wissen auf was wir hinauswollen.
  • .NET: Richtig gehört! Einfach nur .NET ohne Schnörkel. Ursprünglich mal als .NET Core entwickelt, hat Microsoft sich entschieden: Das wird unser neuer .NET-Standard: Modern! Performant! Plattformunabhängig! Vor allem für Web- und Cloud-Anwendungen. Auf Windows gibt’s auch weiterhin Forms und WPF. Und wer es modern will, kann auf .NET MAUI bauen.

Das .NET Framework – .NET wie es leibt und lebt 

Früher war die Welt noch in Ordnung: Es gab nur Server und PCs, Windows war das führende Betriebssystem, Microsoft-Produkte nur für Microsoft und Steve Balmer machte in hemdsärmeligen Reden die Open Source-Gemeinschaft madig. Aus dieser Zeit stammt das .NET Framework. Mit ihnen wurde der Desktop-Bildschirm Dank zusammengeklickter Windows-Forms-Anwendung mit Fenstern zutapeziert. Nicht ohne Grund: Heute wie damals lassen sich langlebige Anwendungen entwickeln, in denen ohne Zusatz-Programme alles drin ist, was Software so braucht. Außerdem laufen diese auf allen Windows-Betriebssystemen – und das sind ja bekanntlich einige:  

  • Windows-XP
  • Windows 7
  • Windows 10 
  • Windows 11

und die endlose Geschichte ist noch lange nicht zu Ende. Und da die Herren von Microsoft ihrer Konkurrenz von Apple und Linux in nichts nachstehen wollten, kreucht und fleucht bis heute alles im .NET Framework herum, was auch auf Windows läuft: 

  • Windows-Dienste, die im Hintergrund alle möglichen Arbeiten erledigen. Kennen Sie TeamViewer oder Teams? Auch hierfür gibt es Programme, die geräuschlos auf der Lauer liegen.
  • Webanwendungen: Es gibt nichts Bequemeres als mit dem Internet Information Services (IIS) eine Webseite zu betreiben (hosten). Passend dazu gibt es natürlich auch .NET-Bibliotheken wie ASP.NET
  • Desktopanwendungen: Sie wissen schon.

Mono – Softwareentwicklung wie vom Berliner Stadt-Affen gebissen 

Mono steht für das spanische Wort Affe. Na toll! Was soll man denn mit so einer Plattform entwickeln? Bananen-Software? Die Idee hinter Mono ist aber alles andere als affig: Sie erinnern sich? .NET basiert auf dem internationalen Standard der Common Language Infrastructure – unter der Nummer ISO/IEC 23271, falls Sie es genau wissen wollen. Jeder kann also prinzipiell seine eigene .NET-Laufzeitumgebung entwickelt und darauf IL-Code auszuführen – hoffentlich werden Sie auch als Entwickler wiedergeboren, um Ihr Werk zu beenden. Das Team vom sogenannten Mono-Projekt hat sich unter Leitung von Miguel de Icaza doch tatsächlich dieser Herausforderung gewidmet. Dabei sind jede Menge Mono-Implementierungen für alle möglichen Betriebssysteme entstanden: 

  • Windows
  • Linux
  • Android
  • iOS
  • macOS

Bei so vielen Betriebssystemen bleibt es nicht aus, dass man sich durch die eine oder andere Verrücktheit durchhacken muss – insbesondere bei Apple, da ist nicht nur das OS ein Exzentriker: 

  • Mono bringt Zusatzfunktionen für UNIX-Betriebssysteme mit
  • Interoperabilitätsfunktionen für Objective-C und Java: Puh! Was für ein Wort. Heißt, Sie können auch Funktionen aus anderen Programmiersprachen nutzen. Aber Vorsicht! Die laufen dann natürlich, nur auf ihrer jeweiligen Plattform. Haben Sie einen Zoo mit Koala-Bären, braucht Ihr Zoo auch immer Eukalyptus-Blätter. Nutzen Sie Funktionen für iOS, läuft Ihr Programm auch nur vollständig auf iOS. Punkt.
  • Zusätzliche Ahead-of-Time-Compiler: Schon wieder ein neuer Compiler? Apples Betriebssysteme, wie iOS, lassen so eine coole Erfindung, wie IL-Code, aus Sicherheitsbedenken einfach nicht zu. Deshalb muss alles direkt für Apples Betriebssystem kompiliert werden. So nach dem Motto: Was in Apple-Hausen geschieht, bleibt auch dort.

Weil man mit dem Verschenken von Software (Open Source) nicht so richtig reich wird, hat man sich vielleicht irgendwann gedacht: Irgendwie muss doch Kohle damit zu machen sein? Jedenfalls wurde Xamarin gegründet und eine gleichnamige Softwareentwicklungs-Plattform für mobile Anwendungen erschaffen, denn sowas gab es noch nicht in der Windows-Welt – über den eher bedauerlichen Versuch, Windows Phone an den Markt zu bringen, wollen wir als Microsoft-Partner lieber schweigen. Android und iOS waren und sind die unangefochtenen Plattformen: Das hat auch Microsoft erkannt. Wie also den Markt erobern? Richtig! Nachdem die harte Arbeit erledigt war, hat man sich das Unternehmen einfach einverleibt. Gut für Softwareentwickler, die mit .NET und C# in Form der Xamarin-Plattform nun auch mobile Anwendungen entwickeln können.  

.NET pur ohne Milch und Zucker 

Das Zentrum im Microsoft Universum war lange Zeit Windows, was vor etwa zehn Jahren durchaus in Ordnung war. Mit Mobile- und Cloud-Computing war dann aber Schluss mit lustig. Schließlich kam 2016 mit .NET Core die erste offizielle .NET-Version von Microsoft heraus, die es wagte sich ins Linux- und macOS-Niemandsland zu begeben. .NET Core, .NET Framework, Mono, .NET Whatever? In dem Saustall findet sich doch keiner mehr zurecht. Deshalb hat Microsoft 2020 auch dem Spuk wieder ein Ende gesetzt und mit .NET 5 bzw. .NET 6 seine Entwicklungspfade weitestgehend vereinigt. Übrig geblieben sind zwei .NET-Versionen: 

  • .NET Framework für Windows-Anwendungen
  • .NET für alles andere, inklusive Xamarin für mobile Anwendungen

Das vereinheitlichte .NET beinhaltet einen Großteil der Bibliotheken vom .NET Framework, ist allerdings etwas störrisch, wenn es um die Bereitstellung von Windows-Anwendungen via alt hergebrachten Technologien, wie beispielsweise dem Windows-Installer geht. Viele Zeitgenossen der Softwareentwicklung können damit aber ganz gut leben. Als Entschädigung ist das Spektrum potentieller Software-Lösungen gigantisch: 

  • Klassische Windows-Anwendungen: Na klar. Die dürfen natürlich nicht fehlen: Dienste, Windows Forms oder WPF sind als ziemlich beste Software-Bibliotheken immer dabei.
  • Universal Windows Plattform-Apps: Von der Xbox bis zum Windows-Server: Mit Apps, die auf einem modernen Windows-Kernel laufen, ist das möglich.
  • Webanwendungen: Egal, ob klassische Server-Anwendung mit ASP.NET MVC oder schnuckelige Single Page App mit Blazor: Webentwicklung ist das Steckenpferd der .NET-Plattform.
  • Cross-Plattform-Anwendungen: Von Android bis macOS sind Sie mit Xamarin ideal aufgestellt. Xamarin beinhaltet auch die Mono-Laufzeitumgebung, die ihre Finger von keinem Betriebssystem lassen kann. Oben drauf gibt es noch einen ganzen Sack an Werkzeugen und Bibliotheken, die zu einem Rundum-Wellness-Programm für die Softwareentwicklung auf macOS, Android und iOS werden.

.NET MAUI: .NET Multi-platform App UI! Wow! Nun hat Microsoft den Vogel endgültig abgeschossen. Waren Android und die Apple-Plattform noch nicht genug, muss nun auch Windows herhalten. .NET MAUI ist kurz der Versuch eine Technologie zu schaffen, um mit einer Code-Basis für jedes Betriebssystem native Anwendungen entwickeln zu können. War alles schon da? Nicht ganz! Insbesondere grafische Oberflächen müssen häufig noch mit plattform-spezifischen Code entwickelt werden. Sie erinnern sich: Nur etwa 80% Ihres Codes ist wirklich plattformunabhängig. .NET MAUI soll nun auch diese Grenze brechen.

.NET – Alles auf Anfang

Brauche ich denn nun .NET für meine Softwareentwicklungs-Projekte oder nicht?

Wir könnten noch stundenlang über die .NET-Softwareentwicklungs-Plattform weitererzählen – in Rücksichtnahme auf die körperliche und seelische Unversehrtheit unserer Mitmenschen lassen wir das aber. Sie müssen sich nicht alles merken, jedenfalls nicht, wenn Sie kein Softwareentwickler in unserem Berliner .NET-Team werden wollen. Ein paar Dinge, die Ihnen helfen können, die richtige Technologie für das nächste Softwareentwicklungsprojekt zu finden, sollten Sie sich aber merken: 

  • .NET ist eine der mächtigsten Softwareentwicklungs-Plattformen: Ein quirliges Energiebündel, mit dem Sie für jedes Betriebssystem fast jede erdenkliche Anwendung schreiben können. Es sei denn Sie wollen zum Mars fliegen – diese Mission können Sie nur teilweise mit .NET realisieren. Zumindest die Technologie für die grafische Oberfläche Ihrer Raumschiff-Computer ist schon mal gesetzt. 
  • .NET bietet einen hohen Investitionsschutz: Eine Technologie, die sich hartnäckig seit über zwanzig Jahren fit hält, bringt so schnell nichts aus der Fassung und wird entsprechend auch noch die nächsten Jahre Bestand haben – dank des Arctic Code Vault von Github werden auch unsere Nachfahren noch ihren Programmierspaß haben.
  • .NET ist technisch voll auf der Höhe: Durch seinen Just-In-Time-Compiler ist es sehr performant. Sollte das mal nicht reichen, hilft Ihnen .NET Native oder andere Ahead-Of-Time-Compiler. Außerdem gilt .NET als sehr sicher, da insbesondere Microsoft mit Argus-Augen auf potentielle Sicherheitslücken achtet und diese behebt.
  • Mit Microsoft und einer großen und vor allem finanzstarken und professionellen Community sind Sie alle Sorgen los. Egal was getan werden muss, um .NET als Plattform frisch zu halten, es wird gemacht. Und das beste: Die meisten Komponenten sind quelloffen und kostenlos!

Sollten Sie jetzt noch Zweifel hegen oder weiteren Gesprächsbedarf zu .NET und wie sich damit so Software entwickeln lässt, haben, rufen Sie uns gerne an. Wir haben bei uns in Berlin ein paar nette Plätzchen, um bei einer Tasse Kaffee einen netten Plausch über Ihr nächstes Softwareentwicklungs-Projekt zu führen – gerne auch mit ein paar leckeren Schnittchen.

Sie haben Fragen oder Anregungen?

Kontaktieren Sie uns noch heute: