Kühnel | C# 8 mit Visual Studio 2019 | E-Book | sack.de
E-Book

E-Book, Deutsch, 1478 Seiten

Reihe: Rheinwerk Computing

Kühnel C# 8 mit Visual Studio 2019

Das umfassende Handbuch
8. Auflage 2019
ISBN: 978-3-8362-6460-0
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

Das umfassende Handbuch

E-Book, Deutsch, 1478 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-6460-0
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Sie haben Fragen zur C#-Entwicklung? Unser bewährtes Kompendium steht Ihnen mit Rat und Tat zur Seite. Mittlerweile in der 8. Auflage dient es ambitionierten Ein- und Umsteigern durch seine strukturierte Vorgehensweise und die zahlreichen Anwendungsbeispiele als praxisorientierte Einführung. Fortgeschrittene und Profis unterstützt es als Nachschlagewerk optimal bei ihrer täglichen Arbeit.
Nach den Grundlagen von C#, .NET und objektorientierter Programmierung geht es weiter mit Visual Studio 2019, Fehlerbehandlung sowie fortgeschrittenen C#-Themen wie LINQ, Multithreading, Serialisierung u. v. m. Den größten Themenblock bildet die Entwicklung von grafischen Benutzeroberflächen. Neben einer fundierten Einführung in WPF, XAML und MVVM erfahren Sie hier alles Notwendige, um auch komplexe Anwendungen zu gestalten. Anschließend wird die Datenbankprogrammierung mit Entity Framework ausführlich behandelt. Auch das Unit-Testing kommt nicht zu kurz. So sind Sie für Ihren Arbeitsalltag bestens gerüstet!

Aus dem Inhalt:

  • C#-Spracheinführung
  • Visual Studio 2019
  • Objektorientierte Programmierung
  • Fehlerbehandlung und Debugging
  • Language Integrated Query (LINQ)
  • Multithreading und Task Parallel Library
  • GUI-Entwicklung mit WPF
  • Model View ViewModel (MVVM)
  • Datenbankprogrammierung mit Entity Framework
  • Unit-Testing


Andreas Kühnel wohnt in Aachen und beschäftigt sich seit über 25 Jahren mit der Programmierung. Er ist seit 1995 als Microsoft Certified Trainer (MCT) zertifiziert. Seine 'große Liebe' galt anfangs Visual Basic. Seit der ersten Vorstellung von .NET konzentriert er sich hauptsächlich auf die Sprachen VB.NET und natürlich C#. Zu seinen Schwerpunkten in der .NET-Welt gehören Datenbanken, Windows-Anwendungen mit WPF, ASP.NET und die WCF (Windows Communication Foundation). Wenn es seine Zeit zulässt, frönt er meist seinem größten Steckenpferd: dem Reisen, bevorzugt in den asiatischen Raum oder nach Australien. Andreas Kühnel ist als freiberuflicher IT-Trainer und Berater deutschlandweit tätig, führt aber auch Schulungen in seinem eigenen Seminarraum in Aachen durch. Kritiken zu diesem Buch sowie Seminaranfragen richten Sie bitte an Kuehnel@dotnet-training.de.
Kühnel C# 8 mit Visual Studio 2019 jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


Materialien zum Buch ... 32  Vorwort zur 8. Auflage ... 34  1.  Allgemeine Einführung in .NET ... 37  1.1 ... Warum .NET? ... 37  1.2 ... .NET unter die Lupe genommen ... 43  1.3 ... Assemblies ... 53  1.4 ... Die Entwicklungsumgebung ... 55  2.  Grundlagen der Sprache C# ... 65  2.1 ... Konsolenanwendungen ... 65  2.2 ... Grundlagen der C#-Syntax ... 70  2.3 ... Variablen und Datentypen ... 75  2.4 ... Operatoren ... 97  2.5 ... Datenfelder (Arrays) ... 110  2.6 ... Kontrollstrukturen ... 118  2.7 ... Programmschleifen ... 129  3.  Das Klassendesign ... 145  3.1 ... Einführung in die Objektorientierung ... 145  3.2 ... Die Klassendefinition ... 148  3.3 ... Referenz- und Wertetypen ... 155  3.4 ... Die Eigenschaften eines Objekts ... 157  3.5 ... Methoden eines Objekts ... 164  3.6 ... Konstruktoren ... 191  3.7 ... Der Destruktor ... 198  3.8 ... Konstanten in einer Klasse ... 199  3.9 ... Statische Klassenkomponenten ... 200  3.10 ... Namensräume (Namespaces) ... 207  3.11 ... Aktueller Stand der Klasse »Circle« ... 217  4.  Vererbung, Polymorphie und Interfaces ... 221  4.1 ... Die Vererbung ... 221  4.2 ... Der Problemfall geerbter Methoden ... 230  4.3 ... Typkonvertierung und Typuntersuchung von Objektvariablen ... 237  4.4 ... Polymorphie ... 243  4.5 ... Weitere Gesichtspunkte der Vererbung ... 250  4.6 ... Das Projekt »GeometricObjectsSolution« ergänzen ... 253  4.7 ... Eingebettete Klassen ... 257  4.8 ... Interfaces (Schnittstellen) ... 258  4.9 ... Das Zerstören von Objekten -- der Garbage Collector ... 273  4.10 ... Die Ergänzungen in den Klassen »Circle« und »Rectangle« ... 280  5.  Delegaten, Ereignisse und Lambda-Ausdrücke ... 283  5.1 ... Delegaten ... 283  5.2 ... Ereignisse eines Objekts ... 293  5.3 ... Lambda-Ausdrücke ... 310  5.4 ... Änderungen im Projekt »GeometricObjectsSolution« ... 314  6.  Strukturen und Enumerationen ... 319  6.1 ... Strukturen -- eine Sonderform der Klassen ... 319  6.2 ... Enumerationen (Aufzählungen) ... 325  6.3 ... Boxing und Unboxing ... 328  7.  Fehlerbehandlung und Debugging ... 331  7.1 ... Laufzeitfehler erkennen ... 332  7.2 ... Debuggen mit Programmcode ... 355  7.3 ... Fehlersuche mit Visual Studio ... 363  8.  Auflistungsklassen (Collections) ... 371  8.1 ... Collections im Namespace »System.Collections« ... 371  8.2 ... Die Klasse »ArrayList« ... 375  8.3 ... Die Klasse »Hashtable« ... 387  8.4 ... Die Klassen »Queue« und »Stack« ... 393  8.5 ... Eigene Auflistungen mit »yield« durchlaufen ... 396  9.  Generics -- generische Datentypen ... 401  9.1 ... Bereitstellen einer generischen Klasse ... 403  9.2 ... Bedingungen (Constraints) festlegen ... 406  9.3 ... Generische Methoden ... 410  9.4 ... Generics und Vererbung ... 411  9.5 ... Typkonvertierung von Generics ... 413  9.6 ... Generische Delegaten ... 414  9.7 ... »Nullable«-Typen ... 415  9.8 ... Generische Collections ... 417  9.9 ... Kovarianz und Kontravarianz generischer Typen ... 421  9.10 ... Ergänzungen im Beispielprojekt »GeometricObjectsSolution« ... 426

10.  Weitere C#-Sprachfeatures ... 429  10.1 ... Implizit typisierte Variablen ... 429  10.2 ... Anonyme Typen ... 430  10.3 ... Erweiterungsmethoden ... 431  10.4 ... Spezielle Methoden ... 435  10.5 ... Operatorüberladung ... 442  10.6 ... »Nullable«-Referenztypen ... 452  10.7 ... Indexer ... 459  10.8 ... Attribute ... 466  10.9 ... Der bedingte NULL-Operator ... 479  10.10 ... Der »nameof«-Operator ... 480  10.11 ... Dynamisches Binden ... 482  10.12 ... Tupel ... 485  10.13 ... Pattern Matching (Musterabgleich) ... 492  10.14 ... Rückgabewerte mit »ref« ... 496  10.15 ... Unsicherer (unsafe) Programmcode -- Zeigertechnik in C# ... 498

11.  LINQ -- Language Integrated Query ... 505  11.1 ... Einstieg in LINQ? ... 505  11.2 ... LINQ to Objects ... 511  11.3 ... Die Abfrageoperatoren ... 515

12.  Arbeiten mit Dateien und Streams ... 539  12.1 ... Einführung ... 539  12.2 ... Namespaces der Ein- bzw. Ausgabe ... 540  12.3 ... Laufwerke, Verzeichnisse und Dateien ... 541  12.4 ... Die »Stream«-Klassen ... 558  12.5 ... Die Klassen »TextReader« und »TextWriter« ... 569  12.6 ... Die Klassen »BinaryReader« und »BinaryWriter« ... 575

13.  Serialisierung ... 585  13.1 ... Serialisierungsverfahren ... 586  13.2 ... Binäre Serialisierung mit »BinaryFormatter« ... 587  13.3 ... Serialisierung mit »XmlSerializer« ... 593

14.  Multithreading ... 599  14.1 ... Einführung in das Multithreading ... 600  14.2 ... Threads -- allgemein betrachtet ... 601  14.3 ... Mit der Klasse »Thread« arbeiten ... 603  14.4 ... Der Threadpool ... 614  14.5 ... Synchronisation von Threads ... 616  14.6 ... Grundlagen asynchroner Methodenaufrufe ... 639

15.  Die Task Parallel Library (TPL) ... 651  15.1 ... Die wichtigsten Klassen der TPL ... 652  15.2 ... Die Klasse »Task« ... 652  15.3 ... Die Klasse »Parallel« ... 665  15.4 ... Asynchrone Programmierung mit »async« und »await« ... 671

16.  Grundlegende .NET-Klassen ... 679  16.1 ... Die Klasse »Object« ... 679  16.2 ... Die Klasse »String« ... 685  16.3 ... Die Klasse »StringBuilder« ... 699  16.4 ... Der Typ »DateTime« ... 705  16.5 ... Die Klasse »TimeSpan« ... 709  16.6 ... Ausgabeformatierung ... 712

17.  Projektmanagement und Visual Studio 2019 ... 721  17.1 ... Der Projekttyp »Klassenbibliothek« ... 721  17.2 ... Assemblies ... 726  17.3 ... Konfigurationsdateien ... 738  17.4 ... Versionierung einer Assembly ... 752  17.5 ... XML-Dokumentation ... 755  17.6 ... Der Klassendesigner (Class Designer) ... 759  17.7 ... Refactoring ... 766  17.8 ... Code-Snippets (Codeausschnitte) ... 769

18.  Die Zukunft: .NET Core und .NET Standard ... 773  18.1 ... Allgemeines ... 774  18.2 ... Die drei Säulen von .NET ... 775  18.3 ... .NET Standard ... 777  18.4 ... Portieren von .NET Framework nach .NET Standard ... 783  18.5 ... C#-Sprachergänzungen für .NET Core ... 784

19.  Einführung in das Entity Framework ... 789  19.1 ... Das Entity Framework im Überblick ... 789  19.2 ... Erstellen eines Entity Data Models (EDM) ... 792  19.3 ... Die automatisch erzeugten Klassen im EDM ... 809

20.  Database First mit dem EDM-Designer ... 815  20.1 ... Einfache Datenabfragen mit LINQ-to-Entities ... 815  20.2 ... In Beziehung stehende Daten laden ... 825  20.3 ... Ändern von Entitäten ... 834  20.4 ... Das Verfolgen der Änderungen ... 841  20.5 ... Die Change Tracker API ... 854  20.6 ... Parallelitätskonflikte behandeln ... 865  20.7 ... Asynchrone Abfrage- und Speicheroperationen ... 879  20.8 ... Transaktionen ... 881  20.9 ... Kontextlose Entitäten ändern ... 883  20.10 ... Validieren mit dem Entity Framework ... 887

21.  Entity Framework -- Code First ... 907  21.1 ... Erste Schritte ... 907  21.2 ... Entity Framework 6 Power Tools ... 909  21.3 ... Das erste Code-First-Modell ... 909  21.4 ... Einführung in die Konfiguration von Code First ... 917  21.5 ... Konventionen und Konfiguration im Detail ... 922  21.6 ... Komplexe Typen ... 933  21.7 ... Konventionen und Konfiguration von Beziehungen ... 937

22.  Einführung in die WPF und XAML ... 957  22.1 ... Die Merkmale einer WPF-Anwendung ... 958  22.2 ... XAML (Extended Application Markup Language) ... 970

23.  Die WPF-Layoutcontainer ... 989  23.1 ... Allgemeiner Überblick ... 989  23.2 ... Gemeinsame Eigenschaften der Layoutcontainer ... 990  23.3 ... Verschachteln von Layoutcontainern ... 1005

24.  Fenster in der WPF ... 1009  24.1 ... Hosts der WPF ... 1009  24.2 ... Fenster vom Typ »Window« ... 1010  24.3 ... Fenster vom Typ »NavigationWindow« ... 1014  24.4 ... Hosts vom Typ »Frame« ... 1027  24.5 ... Nachrichtenfenster mit »MessageBox« ... 1029  24.6 ... Standarddialoge in der WPF ... 1032

25.  WPF-Steuerelemente ... 1037  25.1 ... Die Hierarchie der WPF-Komponenten ... 1037  25.2 ... Allgemeine Eigenschaften der WPF-Steuerelemente ... 1039  25.3 ... Die Gruppe der Schaltflächen ... 1045  25.4 ... Einfache Eingabesteuerelemente ... 1050  25.5 ... WPF-Listenelemente ... 1058  25.6 ... Weitere Steuerelemente ... 1080  25.7 ... Das »Ribbon«-Steuerelement ... 1091

26.  Dependency Properties ... 1099  26.1 ... Die Charakteristik von Abhängigkeitseigenschaften ... 1099  26.2 ... Den Wert einer Abhängigkeitseigenschaft bilden ... 1100  26.3 ... Definition einer Dependency Property ... 1101  26.4 ... Validieren einer Abhängigkeitseigenschaft ... 1109  26.5 ... Angehängte Eigenschaften (Attached Properties) ... 1111

27.  Ereignisse in der WPF ... 1115  27.1 ... Ereignishandler bereitstellen ... 1115  27.2 ... Routing-Strategien ... 1116  27.3 ... Der Ereignishandler ... 1122  27.4 ... Benutzerdefinierte Routed Events ... 1125  27.5 ... Mausereignisse in der WPF ... 1129

28.  Ressourcen, Styles, Trigger und Templates ... 1135  28.1 ... Binäre Ressourcen ... 1135  28.2 ... Logische Ressourcen ... 1138  28.3 ... Styles ... 1150  28.4 ... Trigger ... 1158  28.5 ... Templates ... 1169

29.  WPF-Datenbindung ... 1177  29.1 ... Die Klasse »Binding« ... 1180  29.2 ... Konverter mit »IValueConverter« und »IMultiValueConverter« ... 1192  29.3 ... Validieren von Bindungen ... 1200  29.4 ... Datenbindung mit »ObjectDataProvider« ... 1213  29.5 ... Aktualisieren von Datenklassen ... 1216  29.6 ... Datenbindung von Listen-Steuerelementen ... 1223  29.7 ... Datenbindung und das Entity Framework ... 1237  29.8 ... Das Steuerelement »DataGrid« ... 1238  29.9 ... Das »TreeView«-Control ... 1250  29.10 ... Navigieren, Filtern, Sortieren und Gruppieren ... 1259  29.11 ... Dynamische Zuweisung von Styles und »DataTemplate«-Objekten ... 1272

30.  WPF -- weitergehende Techniken ... 1279  30.1 ... WPF und Multithreading ... 1279  30.2 ... Globalisierung und Lokalisierung ... 1286  30.3 ... Benutzerdefinierte Controls ... 1296

31.  WPF-Commands ... 1307  31.1 ... Allgemeine Beschreibung ... 1308  31.2 ... Ein erstes Programmbeispiel ... 1308  31.3 ... Die Befehlsquelle ... 1311  31.4 ... WPF-Commands ... 1315  31.5 ... »RoutedCommand«-Objekte und »CommandBindings« ... 1320

32.  Das MVVM-Pattern ... 1331  32.1 ... Die Theorie hinter dem Model-View-ViewModel-Pattern ... 1331  32.2 ... Allgemeine Beschreibung des Beispielprogramms ... 1332  32.3 ... Der Ausgangspunkt im Beispiel »MVVM_Origin« ... 1334  32.4 ... Das Bereitstellen des Models ... 1334  32.5 ... Bereitstellen des ViewModels ... 1336  32.6 ... WPF-Commands und Eigenschaften im ViewModel ... 1341  32.7 ... »RoutedCommand«-Objekte im MVVM ... 1347  32.8 ... Beliebige Ereignisse mit »EventTrigger«-Objekten behandeln ... 1352  32.9 ... Die Klasse »Person« durch ein ViewModel kapseln ... 1356  32.10 ... Die Schaltflächen »Rückgängig« und »Speichern« ... 1368  32.11 ... Ein Control in der View fokussieren ... 1374  32.12 ... Die Listenelemente sortieren ... 1378  32.13 ... Ereignisse im ViewModel auslösen ... 1380

33.  2D-Grafik ... 1385  33.1 ... Shapes ... 1385  33.2 ... Path-Elemente ... 1389  33.3 ... »Brush«-Objekte ... 1393

34.  Komponententests (Unit-Tests) ... 1405  34.1 ... Was ist ein Unit-Test? ... 1405  34.2 ... Ein erster Komponententest ... 1408  34.3 ... Komponententest schreiben und ausführen ... 1415  34.4 ... Die Klasse »TestContext« ... 1432  34.5 ... Data-Driven Unit Tests (datengetriebene Tests) ... 1436  34.6 ... Lebenszyklus- Attribute ... 1449  34.7 ... Testen mit »Assert« ... 1453  34.8 ... Test-Driven Development -- TDD ... 1462  Index ... 1465


1    Allgemeine Einführung in .NET


1.1    Warum .NET?


Einem Leser, der über fundierte Grundlagenkenntnisse verfügt, eine Thematik nahezubringen, die seine Aufmerksamkeit erregt und ihm neue Kenntnisse vermittelt, ist ein nicht ganz einfaches Unterfangen. Dabei gleichzeitig einen Programmieranfänger behutsam in die abstrakte Denkweise der Programmlogik einzuführen, ohne zugleich Frust und Enttäuschung zu verbreiten, dürfte nahezu unmöglich sein. Ich versuche mit diesem Buch dennoch, diesen Weg zu beschreiten, auch wenn es manchmal einer Gratwanderung zwischen zwei verschiedenen Welten gleicht. Dabei baue ich schlicht und ergreifend auf den jahrelangen Erfahrungen auf, die ich als Trainer in vielen Seminaren mit teilweise ausgesprochen heterogenen Gruppen erworben habe.

Vielleicht wissen Sie überhaupt noch nicht, was sich hinter .NET verbirgt? Vielleicht haben Sie sich für dieses Buch entschieden, ohne die Tragweite Ihres Entschlusses für .NET zu kennen. Ich möchte Ihnen das zunächst einmal erläutern.

Blicken wir ein paar Jahre zurück, sagen wir in die 90er-Jahre, und stellen wir uns die Frage, wie damals Anwendungen entwickelt wurden und wie sich die IT-Welt während dieser Zeit entwickelt hat. Am Anfang des von uns betrachteten Jahrzehnts war der Hauptschauplatz der Desktop-PC, Netzwerke steckten noch mehr oder weniger in den Kinderschuhen. Grafische Benutzeroberflächen hielten langsam Einzug auf den Rechnern, das Internet war einem nur mehr oder weniger elitären Benutzerkreis bekannt und zugänglich. Desktop-PCs wurden mit immer besserer Hardware ausgestattet; ein Super-PC von 1990 galt zwei Jahre später als total veraltet und musste wegen der gestiegenen Anforderungen der Software an die Hardware oft zumindest drastisch aufgerüstet, wenn nicht sogar ersetzt werden.

Sie merken vielleicht an diesen wenigen Worten, wie dramatisch sich die IT-Welt seitdem verändert hat. Die Evolution betraf aber nicht nur Software und Hardware. Software muss, ehe sie den Benutzer bei seiner täglichen Arbeit unterstützen kann, entwickelt werden. Hier kochten viele Unternehmen ein eigenes Süppchen und warben bei den Entwicklern und Entscheidungsträgern mit Entwicklungsumgebungen, die zum einem auf den unterschiedlichsten Programmiersprachen aufsetzten und zudem mit eigenen Funktionsbibliotheken aufwarteten: Borlands Delphi, Microsofts Visual Basic, für die Puristen C und C++ – um nur die bekanntesten Vertreter zu nennen.

Die Vielfalt betraf jedoch nicht nur die Entwicklung der Software. Immer neue Plattformen, angepasst an den jeweils aktuellen Trend der Zeit, eroberten den Markt und verschwanden nicht selten auch schnell wieder. Die Unternehmensnetzwerke mussten mit der stürmischen Entwicklung Schritt halten, wurden komplexer und komplizierter und öffneten sich zunehmend auch der Welt nach außen.

In dieser Periode begann auch der Siegeszug des Internets. Obgleich es anfangs nur als weltweiter Verteiler statischer Dateninformationen positioniert war, wurden immer mehr Technologien ausgedacht, die die statischen Webseiten durch dynamische ersetzten, die dem Anwender nicht immer dieselben Informationen bereitstellten, sondern genau die, für die er sich interessierte. Datenbanken wurden hinter die Webserver geschaltet und fütterten die Webseiten mit dem aktuellsten Informationsstand.

Kluge Köpfe erkannten auch sehr schnell, dass die Spezifikationen des Internets sich auch dazu eignen, mehrere Unternehmen zu koppeln. Damit wurde die Grundlage dafür geschaffen, dass Sie heute im Reisebüro oder im Internetbrowser eine Reise buchen können, die nicht nur den Flug, sondern gleichzeitig eine gültige Hotelzimmerbuchung, vielleicht sogar samt Mietwagen, umfasst – obwohl hierzu schon drei Informationsquellen mit unterschiedlicher Software abgezapft werden müssen: ein nicht ganz einfaches Unterfangen, wenn Sie bedenken, dass möglicherweise die Schnittstellen, über die die verschiedenen Komponenten sich zwangsläufig austauschen müssen, nicht einheitlich definiert sind.

Bei dieser rasanten Entwicklung der Möglichkeiten, Daten auszutauschen oder auch nur weiterzuleiten, sollten Sie nicht vergessen, dass auch die Hardware eine ähnliche Entwicklung genommen hat. Ein Phone besitzen heutzutage schon die meisten schulpflichtigen Kinder, und der mobile Sektor entwickelt sich immer noch dramatisch schnell. Ein Ende dieser Spirale ist derzeit nicht zu erkennen.

An der Schnittstelle all dieser Vielfältigkeit steht der Entwickler – was nutzen die beste Hardware und die ausgeklügelten Spezifikationen, wenn die Bits sich nicht den Weg von einem zum anderen Endpunkt bahnen? Für diesen Bitfluss wollen Sie als Entwickler sorgen. Damit fangen aber wegen der oben erwähnten Vielgestaltigkeit der IT-Welt die Probleme an: verschiedene Plattformen, unterschiedliche Programmiersprachen, mehrere Klassenbibliotheken, eine Vielzahl zu beachtender Spezifikationen usw.

Einen ersten Schritt in Richtung Vereinheitlichung beschritt die Firma Sun mit Java. Der Erfolg, den diese plattformunabhängige Sprache hatte und auch immer noch hat, war auch ein Zeichen für Microsoft, um das Entwicklerterrain zu kämpfen. Nach einer eingehenden Analyse der Anforderungen, die gegen Ende der 90er-Jahre an die damalige Software gestellt wurden, sowie einer Trendanalyse der Folgejahre wurde das .NET Framework entwickelt. Dabei konnte Microsoft die »Gunst der späten Stunde« nutzen und die Nachteile und Schwachpunkte, die jedes Produkt, also auch Java, hat, durch neue Ideen ausmerzen.

Nein, .NET ist natürlich auch kein Heilsbringer und wird sicherlich nicht die Menschheit überdauern. Aber nach heutigen Maßstäben ist .NET das wahrscheinlich effizienteste Framework, in dessen Mittelpunkt die .NET Klassenbibliothek steht. Diese bietet Ihnen alles, was Sie zum Entwickeln brauchen – egal, ob es sich um eine einfache Anwendung handelt, die nur ein paar Daten anzeigt, oder um eine Unternehmensanwendung großen Stils. Sie können Desktop-Anwendungen genauso erstellen wie eine hochkomplexe Internetanwendung. Sie können die Microsoft Office-Produkte damit programmieren, fremde Datenquellen anzapfen, Programme für Ihr Phone schreiben und vieles mehr. Dazu müssen Sie sich nicht immer wieder in neue Programmiersprachen und neue Entwicklungsumgebungen einarbeiten, denn alles ist wie aus einem Guss.

Ich möchte jetzt nicht den Eindruck vermitteln, dass alles ganz einfach ist und Sie demnächst ganz tolle Anwendungen mit den tollsten Features präsentieren können. Dafür ist die .NET-Klassenbibliothek einfach zu umfangreich. Aber Sie können sich darauf verlassen, dass Sie sich nun auf das Wesentliche Ihrer Arbeit konzentrieren können: Sie arbeiten unabhängig vom Typ der zu entwickelnden Anwendung immer in derselben Umgebung, zum Beispiel mit Visual Studio 2019. Sie brauchen sich nicht immer wieder aufs Neue in andere Programmiersprachen einzuarbeiten, sondern können auf gewonnene Kenntnisse aufsetzen. Und Ihnen werden alle Mittel an die Hand gegeben, um auf wirklich einfachste Weise mit fremden Anwendungen zu kommunizieren, wenn sich diese an bestimmten, allgemein anerkannten Spezifikationen orientieren.

Eine Funktionssammlung (eigentlich müsste ich an dieser Stelle richtigerweise von einer Klassenbibliothek sprechen) ist nur so gut, wie sie auch zukünftige Anforderungen befriedigen kann. Dass .NET hier architektonisch den richtigen Weg beschritten hat, beweist die derzeit aktuelle Version 4.7.x.

Genau an dieser Stelle darf ich Ihnen natürlich auch den großen Haken nicht verschweigen, den die ansonsten so hervorragende Umgebung hat: Sie werden mit Sicherheit niemals alle Tiefen von .NET ergründen. Als jemand, der von der ersten Beta-Version mit dabei war, muss ich sagen, dass ich mich immer wieder aufs Neue davon überraschen lassen muss, welche Fähigkeiten in der .NET-Klassenbibliothek schlummern. Verabschieden Sie sich von der Idee, jemals alle Klassen mit ihren Fähigkeiten erfassen zu können. Dafür ist die Klassenbibliothek ist einfach zu mächtig.

1.1.1    Die Zukunft von .NET


.NET lebt, aber das .NET Framework ist mit Visual Studio 2019 in seine letzte Runde eingetreten. Warum das, werden Sie sich an dieser Stelle fragen.

Wie viele Dinge im Leben, bedarf .NET einer Grunderneuerung. Viele Bibliotheken sind veraltet und wurden durch neue Bibliotheken ersetzt. Viele APIs (Programmierschnittstellen) sind obsolet, sollten also nicht mehr verwendet werden. Allerdings wurde bisher der alte »Ballast« immer mitgeschleppt. Zudem hat sich sehr viel in der Welt der Programmierung getan: Neben Windows werden nunmehr auch andere Betriebssysteme wie macOS und Linux von Microsoft akzeptiert. Darüber hinaus dürfen wir nicht übersehen, dass der mobile Sektor in allen Bereichen Einzug gehalten hat: Android hat beispielsweise in Deutschland einen Marktanteil von 71 %, iOS liegt bei ungefähr 25 %. Den Trend zu alternativen Betriebssystemen konnte Microsoft nicht weiter ignorieren. Das äußerte sich einerseits in der Übernahme von Xamarin (ein Tool, mit dem sich Windows-Phone-, iOS- und Android-Apps mit C# entwickeln lassen), aber auch die Einführung von .NET Core. Und damit ist auch bereits das wichtige Stichwort gefallen: .NET Core. .NET Core beschreibt Klassenbibliotheken, die sowohl unter Windows, aber auch unter Linux und macOS lauffähig sind. Gleichzeitig wird der alte Ballast über Bord geworfen, .NET Core ist also schlanker als das .NET Framework.

Welche Konsequenzen wird .NET Core auf die Entwicklung einer Software mit C# ausüben? Die Antwort ist recht...


Kühnel, Andreas
Andreas Kühnel wohnt in Aachen und beschäftigt sich seit über 25 Jahren mit der Programmierung. Er ist seit 1995 als Microsoft Certified Trainer (MCT) zertifiziert. Seine „große Liebe“ galt anfangs Visual Basic. Seit der ersten Vorstellung von .NET konzentriert er sich hauptsächlich auf die Sprachen VB.NET und natürlich C#. Zu seinen Schwerpunkten in der .NET-Welt gehören Datenbanken, Windows-Anwendungen mit WPF, ASP.NET und die WCF (Windows Communication Foundation). Wenn es seine Zeit zulässt, frönt er meist seinem größten Steckenpferd: dem Reisen, bevorzugt in den asiatischen Raum oder nach Australien.
Andreas Kühnel ist als freiberuflicher IT-Trainer und Berater deutschlandweit tätig, führt aber auch Schulungen in seinem eigenen Seminarraum in Aachen durch. Kritiken zu diesem Buch sowie Seminaranfragen richten Sie bitte an Kuehnel@dotnet-training.de.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.