Einführung in C# für Netzwerker
Allgemeine Projektverwaltung
-
Projektmappe und Projekte
- Beispielprojekt Bankhaus_Dagobert
- Projekttypen: Klassenbibliothek, Testprojekt, Winform, Webanwendung und WPF
-
Abbildungen der Schichten auf Projekte:
- Business Layer (abstraktes Objektmodell = Domain) → BankBusinessLayer.dll
- Dataaccess Layer (Implementierung des abstrakten Objektmodells´, z.B. auf einer Datenbank) → BankDataAccessLayer.dll
- GUI → BankGui.WinForm.exe
-
NuGet Package Manager
- Einführung in die Verwaltung von Abhängigkeiten zwischen Bibliotheken
- Installation der Beispielbibliothek in der Projektmappe mit den Übungen
- Eignene nuget- Packages anlegen und in ein selbstdefiniertem Repository veröffentlichen.
C# objektorientiert
- Klassenbildung über Objektmengen
- Innerer Zustand, Eigenschaften und Methoden
-
Wertetypen vs- Referenztypen
- struct- vs. class Blöcke
- copy by value vs. copy by reference
-
Lebenszyklus, Konstruktoren, Dispose und Destruktor
- Objektinitialisierer und annonyme Typen
- Dispose- Schnittstelle
- Dispose manuell und in using Block
- Zugriffsmodifikatoren : z.B. public vs. internal (siehe CSharp45.Basics/ _04_Objektorientiert/ Astro/ inMem/ Konstruktoren von Galaxie, Stern)
-
Vererbung als Abstraktionskonzept und als Konzept zur Wiederverwendung
von Code
- Klasse Himmeslkörper als Verallgemeinerung von Galaxie und Stern (Basics._04_Objektorientiert.Astro)
- Mengen von Sterne, Galaxien und Planeten als Arrays von Himmelskörpern
- Verallgemeinern der Masseberechnung von Himmelskörpern dank virtuelle Methoden → Begriffsbildung "abstrakte Klasse"
- new vs. override (Bsp. Auto.tanken und Auto.tanken_polymorph)
Fehlerbehandlung
- Strukturierte Fehlerbehandlung mittels Try .. Catch
- Fehlerklassen
- ThrowIf...() Funktionen
Schnittstellen
-
Wir erinnern uns:
IDisposable
-
Wie Schnittstellen in .NET Mengenkonzepte abbilden
→ Schnittstellenvererbung als Abstraktionskonzept
- Implementieren von
IEnumarable
in der Klasse PrimSet - Implementieren von
IComparable
für sortierbare Listen aus Preis- Objekten - Vereinfachte Implementierung von
IEnumerator
mittelsyield
- Implementieren von
- Schnittstellenvererbung vs. Implementierungsvererbung
Generische Typen
- Motivation zur generischen Programmierung: Sortiere „Äpfel und Birnen“
- Bsp: ArrayInt und ArrayGenerisch<t> (Indexer)
- Vordefiniere generische Typen
- Selber generische Typen mit Einschränkungen definieren (Bsp.: struct mko.BI.Interval<T>)
- Co- Varianz (Beispiel: IEnumerable<out T>")
Objekt- funktionales Programmieren und LINQ
-
Einsprungadressen mittels Delegates verwalten
- Die vordefinierten generischen Typfamile Func<...> und Actions<...>
- Einsprungadressen speichern, aufrufen, entfernen aus einer Delegate- Variablen
- Lambda- Ausdrücke: Funktionen inline deklarieren
-
Listenverarbeitung mit Lambda und LINQ
- Allgemeine Listenoperationen wie Take, Skip, Concat
- Liste mit Preisen sortieren
- Liste mit Preisen Filtern
- Liste mit Preisen in $ umrechnen
-
Zugriff auf Datenbanken mittels Linq
- Installation von Kepler-DB
- Objektrelationalen Mapper mittels Entity- Framework einrichten
- Zugriff auf Tabellen mittels Linq
Windows Anwendungen
- Kurze Einührung in Windows Forms
- Implementieren eines kleinen Datenbank- Clients
- Daten als Excel oder PDF- Dokumente formatieren mittels ReportViewer
Multithreading und asynchrone Programmierung
- Grundlagen
- Methoden mit Threads aus dem Threadpool via Delegate starten
- Vorteile des Threadpools
- Nachteile der direkten Nutzung von Threads zwecks Vollauslastung des Rechners
- Vollauslastung mittels TPL (Task Parallel Library) erreichen
- Asynchrone Methoden mittels async/await
Netzwerkzugriff
- Sockets, Endpoints, Channels
- Austausch von Datentelegrammen über TCP/IP mittels System.Net.Sockets implementieren
- Senden einer Email mittels System.Net.Mail.SmtpClient
- Das HTTP Protokoll und die REST Architektur
- Zugriff auf restful Webdienste über HTTP mittels System.Net.Http.HttpClient
Webanwendungen mit ASP.NET MVC
- Einführung in das MVC- Pattern
- Implementierung einer kleinen Datenbank- Clients
- CSV Download
- Formatieren einer Tabellensicht für die Druckerausgabe
- Implementieren eines Webdienstes, der durch einen Windows- Forms- Client konsumiert wird
- Absichern der Anwendung durch Authentifizierung und Authorisierung
Einbinden unverwalteter DLL's
- Funktionen einer C++ DLL in C# aufrufen
- Daten zwischen verwalteter und unverwalteter Welt austauschen