dotNET

dotNET ist Microsofts plattformübergreifende Entwicklungsplattform für Web-, Desktop-, Mobile-, Cloud- und Spiele-Apps.

Mentales Modell: das Microsoft-Pendant zu Java / Jakarta EE.

I. Was ist dotNET?


dotNET ist eine Runtime + Bibliotheken + Tools, mit denen du in C#, F# oder VB Anwendungen baust, die auf Windows, Linux und macOS laufen.

┌──────────────────────────────────────────────┐
│  Deine App (C# / F# / VB)                    │
├──────────────────────────────────────────────┤
│  BCL — Base Class Library (System.*, ...)    │
├──────────────────────────────────────────────┤
│  CLR — Common Language Runtime               │
│  ├─ JIT-Compiler (IL → Maschinencode)        │
│  ├─ Garbage Collector                        │
│  └─ Type System                              │
├──────────────────────────────────────────────┤
│  OS (Windows / Linux / macOS)                │
└──────────────────────────────────────────────┘
Java-Vergleich

CLR ≈ JVM, BCL ≈ JDK Standard Library, IL ≈ Bytecode.

II. Editionen — der Versions-Dschungel


Microsoft hat mehrmals umbenannt. Aktuell gilt:

Edition Plattform Status
.NET Framework (1.0 – 4.8) nur Windows Legacy, nur noch Bugfixes
.NET Core (1.0 – 3.1) Cross-Platform Legacy, ersetzt durch .NET 5+
.NET 5 / 6 / 7 / 8 / 9 Cross-Platform ✅ Aktuell
Mono / Xamarin Mobile (alt) abgelöst durch MAUI
".NET" ohne Zahl meint heute .NET 5+ (also .NET 8 / 9). Nicht das alte ".NET Framework"!

III. Hauptkomponenten


CLR — Common Language Runtime

BCL — Base Class Library

NuGet

MSBuild

IV. Sprachen auf dotNET


Sprache Stil Use Case
C# OOP + funktional Default, 99% aller Projekte
F# funktional Data Science, Finance
VB.NET OOP Legacy-Code

Alle drei kompilieren zu derselben IL → laufen auf der gleichen CLR.

V. App-Typen


Was du mit dotNET bauen kannst:

                  ┌─────────────────┐
                  │     .NET 8      │
                  └────────┬────────┘
        ┌──────────┬───────┼────────┬──────────┐
        │          │       │        │          │
    ┌───▼───┐  ┌───▼───┐ ┌─▼──┐ ┌───▼───┐  ┌───▼───┐
    │ASP.NET│  │  WPF  │ │MAUI│ │Console│  │ Blazor│
    │  Core │  │WinForm│ │    │ │       │  │       │
    └───────┘  └───────┘ └────┘ └───────┘  └───────┘
       Web      Desktop  Mobile   CLI        Web-UI

VI. Mapping zu Jakarta EE


Meine mentale Brücke beim Jakarta-EE-Lernen bei Muckenhirn:

dotNET Jakarta EE
AddScoped @Stateless
AddSingleton @Singleton
Session State @Stateful
[Inject] / Constructor DI @EJB / @Inject
IServiceProvider JNDI
DbContext (EF Core) EntityManager (JPA)
[Table], [Key] @Entity, @Id
TransactionScope CMT
appsettings.json standalone.xml
dotnet publish + IIS Restart .war drop = Hot-Deploy
FrameworkReference providedCompile
Castle DynamicProxy Container-Proxy

VII. Castle DynamicProxy


dotNETs Equivalent zum Container-Proxy — generiert Proxy-Klassen zur Laufzeit. Beispiel: EF Core Lazy-Loading-Proxies.

VIII. Bsp — Hello World


using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello, .NET!");
    }
}

Build + Run:

dotnet new console -n HelloApp
cd HelloApp
dotnet run

IX. Verwandte Notizen