Skip to Content

Plattform und Ökosystem

C# Charakterisierung kennen

  • Objektorientiert,
  • streng typisiert
  • automatische Speicherverwaltung (Garbage Collection)
  • LINQ
  • native Unterstützung für asynchrone Programmierung

Kann C# auch für Webentwicklung genutzt werden

Ja, C# kann für Webentwicklung genutzt werden. Für Backend Entwicklung kann man ASP.NET Core nutzen. Server-Side Rendering nutzt Razor Pages und für Full-Stack Entwicklung wird Blazor verwendet.

Was ist Blazor und wofür braucht man es (Folie 41)

Blazor ist ein Framework, womit Web-UI Komponenten in C# gebaut werden können. Die UI wird in HTML und CSS geschrieben und Blazor rendert die UI in den Browser. .Net Bibliotheken können genutzt werden und Logik kann client- und server-seitig implementiert werden.

Man bleibt in einer Sprache und muss nicht zwischen JavaScript und C# hin und her wechseln. Blazor verwendet Razor Komponenten die erlauben HTML und C# Code zu mischen.

Wo läuft der Code:

  • Blazor WebAssembly - Der Code läuft im Browser mit WebAssembly. Vorteil: Offline nutzbar und Server Entlastung. Nachteil: Großer Download beim Start.
  • Blazor Server - Der Code läuft auf dem Server. UI-Updates werden per SignalR an den Browser geschickt. Vorteil: Schneller Start und voller Server Zugriff. Nachteil: Braucht permanente Verbindung zum Server.

Ist C# für Systemprogrammierung gut?

Nein, da C# direkt auf dem Betriebssystem läuft, sondern unter der .NET Runtime. Die Runtime verwaltet viele Dinge, die die besondere Kontrolle beim low-level Programmieren verhindern. Der Code wird in Intermediate Language (IL) kompiliert und dann per JIT in Native Code umgewandelt. Man hat weniger Kontrolle über die Speicherverwaltung, exakte CPU-Instruktionen usw.

Ist C# Windows beschränkt

Nein, C# kann auf Windows, Linux und macOS verwendet werden. Auf der Plattform muss nur eine .NET Runtime installiert sein. Manche Features wie WPFs oder Windows Forms sind jedoch nur auf Windows verfügbar.

Etwas zu Java, C und C++ kennen im Vergleich zu C#

Wie entstand C# und .NET?

Microsoft begann 1996 unter Anders Hejlsberg mit der Entwicklung von C# und .NET. Die Motivation war ältere Technologien, wie Win32 API, COM und Visual Basic abzulösen. Ziel war es eine zukunftssichere, erweiterbare Grundlage für Programmierung zu schaffen und den Übergang in eine objektorientierte Programmierung zu ermöglichen.

Vergleich C# vs Java

C# und Java sind sehr ähnlich. Beide sind objektorientierte Sprachen und haben eine ähnliche Syntax. C# und .NET wurden anfangs vor allem für Windows entwickelt. Java unterstützte bereits von Beginn an den Ansatz von Plattformunabhängigkeit.

Beide Sprachen arbeiten mit Zwischencode der vom Compiler erzeugt wird und dann zur Laufzeit interpretiert wird. In Java heißt dieser Code Bytecode und in C# heißt dieser Code Intermediate Language (IL).

Die Übersetzung erfolgt per Just-In-Time (JIT) Kompilierung. Nur der aktuell benötigte Code wird übersetzt und im Cache gespeichert.

Beide Sprachen benutzen keine C++ üblichen Header Dateien

Plattform Strategie

  • .NET 4.8 nur auf Windows, ab .NET 6 Plattformunabhängig

Problem bei Plattformübergreifend?

  • UI Hauptproblem, Jedes OS mit Native UI

Was muss man über C# wissen? (Folie 49)

Merkmale von .NET

Alle Datentypen in .NET sind unabhängig von der Sprache Definiert. Jede .NET Sprache (C#, F#, VB.NET, etc.) hat ihren eigenen Syntax und sprachspezifische Konstrukte. Es wird eine Base Class Library (BCL) verwendet, die viele Funktionen zum schreiben einer Anwendung bereitstellt. Der Zwischencode besitzt Metadaten, die dann für IntelliSense verwendet werden können. Unterschiedliche Versionen von .NET können auf einem System parallel installiert werden.

Wie läuft ein Übersetzungsprozess ab?

Quellcode -> C# Compiler -> Assembly (IL + Metadaten) -> Laufzeit (JIT) -> Native Code

Common Type System (CTS)

Common Type System (CTS) ist ein Typensystem, das alle Typen in .NET vereinheitlicht.

Base Class Library (BCL)

Base Class Library (BCL) ist eine Bibliothek, die viele nützliche Typen und Methoden enthält.

Beispiele für Typen in der BCL:

  • Console
  • File
  • Math
  • String
  • Object
  • IEnumerable
  • IEnumerator
  • IDisposable

Intermediate Language? Vor- und Nachteile? Warum, was?

Intermediate Language (IL) ist der Zwischencode, der vom Compiler erzeugt wird. Er wird zur Laufzeit von der Common Language Runtime (CLR) interpretiert und in Native Code umgewandelt.

Vorteile:

  • Plattformunabhängig
  • Metadaten: Assemblies enthalten Typinfos die z.B. IntelliSense ermöglichen
  • JIT Optimierung: Der native Code kann bei JIT an die aktuelle CPU angepasst werden

Nachteile:

  • Reverse Engineering: Der IL Code ist näher an lesbaren Code als der Native Code
  • Abhängigkeit: Zum Ausführen braucht man eine passende .NET Runtime
Last updated on