mk-prg-net \net \ cs \course \networkers

Einführung in C# für Netzwerker

Allgemeine Projektverwaltung

  1. Projektmappe und Projekte
    1. Beispielprojekt Bankhaus_Dagobert
    2. Projekttypen: Klassenbibliothek, Testprojekt, Winform, Webanwendung und WPF
    3. Abbildungen der Schichten auf Projekte:
      1. Business Layer (abstraktes Objektmodell = Domain) → BankBusinessLayer.dll
      2. Dataaccess Layer (Implementierung des abstrakten Objektmodells´, z.B. auf einer Datenbank) → BankDataAccessLayer.dll
      3. GUI → BankGui.WinForm.exe
  2. NuGet Package Manager
    1. Einführung in die Verwaltung von Abhängigkeiten zwischen Bibliotheken
    2. Installation der Beispielbibliothek in der Projektmappe mit den Übungen
    3. Eignene nuget- Packages anlegen und in ein selbstdefiniertem Repository veröffentlichen.

C# objektorientiert

  1. Klassenbildung über Objektmengen
  2. Innerer Zustand, Eigenschaften und Methoden
  3. Wertetypen vs- Referenztypen
    1. struct- vs. class Blöcke
    2. copy by value vs. copy by reference
    3. Lebenszyklus, Konstruktoren, Dispose und Destruktor
      1. Objektinitialisierer und annonyme Typen
      2. Dispose- Schnittstelle
      3. Dispose manuell und in using Block
  4. Zugriffsmodifikatoren : z.B. public vs. internal (siehe CSharp45.Basics/ _04_Objektorientiert/ Astro/ inMem/ Konstruktoren von Galaxie, Stern)
  5. Vererbung als Abstraktionskonzept und als Konzept zur Wiederverwendung von Code
    1. Klasse Himmeslkörper als Verallgemeinerung von Galaxie und Stern (Basics._04_Objektorientiert.Astro)
    2. Mengen von Sterne, Galaxien und Planeten als Arrays von Himmelskörpern
    3. Verallgemeinern der Masseberechnung von Himmelskörpern dank virtuelle Methoden → Begriffsbildung "abstrakte Klasse"
    4. new vs. override (Bsp. Auto.tanken und Auto.tanken_polymorph)

Fehlerbehandlung

  1. Strukturierte Fehlerbehandlung mittels Try .. Catch
  2. Fehlerklassen
  3. ThrowIf...() Funktionen

Schnittstellen

  1. Wir erinnern uns: IDisposable
  2. Wie Schnittstellen in .NET Mengenkonzepte abbilden → Schnittstellenvererbung als Abstraktionskonzept
    1. Implementieren von IEnumarable in der Klasse PrimSet
    2. Implementieren von IComparable für sortierbare Listen aus Preis- Objekten
    3. Vereinfachte Implementierung von IEnumerator mittels yield
  3. Schnittstellenvererbung vs. Implementierungsvererbung

Generische Typen

  1. Motivation zur generischen Programmierung: Sortiere „Äpfel und Birnen“
  2. Bsp: ArrayInt und ArrayGenerisch<t> (Indexer)
  3. Vordefiniere generische Typen
  4. Selber generische Typen mit Einschränkungen definieren (Bsp.: struct mko.BI.Interval<T>)
  5. Co- Varianz (Beispiel: IEnumerable<out T>")

Objekt- funktionales Programmieren und LINQ

  1. Einsprungadressen mittels Delegates verwalten
    1. Die vordefinierten generischen Typfamile Func<...> und Actions<...>
    2. Einsprungadressen speichern, aufrufen, entfernen aus einer Delegate- Variablen
  2. Lambda- Ausdrücke: Funktionen inline deklarieren
  3. Listenverarbeitung mit Lambda und LINQ
    1. Allgemeine Listenoperationen wie Take, Skip, Concat
    2. Liste mit Preisen sortieren
    3. Liste mit Preisen Filtern
    4. Liste mit Preisen in $ umrechnen
  4. Zugriff auf Datenbanken mittels Linq

    1. Installation von Kepler-DB
    2. Objektrelationalen Mapper mittels Entity- Framework einrichten
    3. Zugriff auf Tabellen mittels Linq

Windows Anwendungen

  1. Kurze Einührung in Windows Forms
  2. Implementieren eines kleinen Datenbank- Clients
  3. Daten als Excel oder PDF- Dokumente formatieren mittels ReportViewer

Multithreading und asynchrone Programmierung

  1. Grundlagen
  2. Methoden mit Threads aus dem Threadpool via Delegate starten
  3. Vorteile des Threadpools
  4. Nachteile der direkten Nutzung von Threads zwecks Vollauslastung des Rechners
  5. Vollauslastung mittels TPL (Task Parallel Library) erreichen
  6. Asynchrone Methoden mittels async/await

Netzwerkzugriff

  1. Sockets, Endpoints, Channels
  2. Austausch von Datentelegrammen über TCP/IP mittels System.Net.Sockets implementieren
  3. Senden einer Email mittels System.Net.Mail.SmtpClient
  4. Das HTTP Protokoll und die REST Architektur
  5. Zugriff auf restful Webdienste über HTTP mittels System.Net.Http.HttpClient

Webanwendungen mit ASP.NET MVC

  1. Einführung in das MVC- Pattern
  2. Implementierung einer kleinen Datenbank- Clients
  3. CSV Download
  4. Formatieren einer Tabellensicht für die Druckerausgabe
  5. Implementieren eines Webdienstes, der durch einen Windows- Forms- Client konsumiert wird
  6. Absichern der Anwendung durch Authentifizierung und Authorisierung

Einbinden unverwalteter DLL's

  1. Funktionen einer C++ DLL in C# aufrufen
  2. Daten zwischen verwalteter und unverwalteter Welt austauschen