C#-Bibliotheken: Ein Leitfaden zur Ökosystem für Profis und Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum C# nicht nur eine Sprache, sondern ein ganzes Universum an Werkzeugen ist

\n

Wenn ein Entwickler gerade erst in die Welt von .NET eintaucht, denkt er oft: „C# ist cool, aber was kann ich jetzt sofort tun?“ Die Antwort ist einfach: Bibliotheken nutzen. Das C#-Ökosystem ist so reichhaltig, dass es manchmal scheint, als gäbe es für jede Aufgabe bereits eine fertige Lösung auf NuGet. Und das ist großartig, denn beliebte C#-Bibliotheken ermöglichen es, das Rad nicht neu zu erfinden, sondern sich auf die Geschäftslogik zu konzentrieren.

\n

In diesem Artikel werden wir uns das Ökosystem der .NET-Bibliotheken ansehen, die jeder Entwickler wirklich braucht. Wir werden nicht einfach nur Namen aufzählen – ich zeige Codebeispiele, erkläre, wo was eingesetzt wird, und gebe praktische Tipps. Los geht's!

\n\n

Protokollierung: Serilog vs NLog – Kampf der Titanen

\n

Protokollierung ist das Erste, worüber man nachdenken sollte. Ohne Logs sind Sie blind. Die Bibliothek Serilog ist zum De-facto-Standard in der .NET-Welt geworden. Warum? Weil sie Logs überall hin senden kann: in eine Datei, die Konsole, Elasticsearch, eine Datenbank. Und das mit minimaler Konfiguration.

\n

Beispiel: Serilog in ASP.NET Core einrichten

\n
using Serilog;\n\nLog.Logger = new LoggerConfiguration()\n    .WriteTo.Console()\n    .WriteTo.File("logs/myapp-.txt", rollingInterval: RollingInterval.Day)\n    .CreateLogger();\n\nvar builder = WebApplication.CreateBuilder(args);\nbuilder.Host.UseSerilog();\n\nvar app = builder.Build();\napp.MapGet("/", () => "Hello World!");\napp.Run();
\n

NLog ist ebenfalls ein leistungsstarkes Werkzeug, erfordert aber mehr Konfiguration in XML. Wenn Sie es einfach und schnell möchten – wählen Sie Serilog. Wenn Sie die volle Kontrolle benötigen – NLog. Aber für 90% der Projekte ist Serilog die optimale Wahl.

\n\n

Entity Framework Core: ORM, das man nicht fürchten muss

\n

Die Arbeit mit Datenbanken ist der Schmerz eines jeden Entwicklers. C#-Bibliotheken für die Datenbankarbeit teilen sich in zwei Lager: schwere ORMs (Entity Framework) und leichte (Dapper). Entity Framework Core (EF Core) ist ein leistungsstarkes Werkzeug, das SQL für Sie generiert. Es ist ideal für komplexe Domänenmodelle.

\n

Beispiel: Einfaches CRUD mit EF Core

\n
public class User\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n}\n\npublic class AppDbContext : DbContext\n{\n    public DbSet<User> Users { get; set; }\n}\n\n// Verwendung\nusing var db = new AppDbContext();\nvar user = new User { Name = "Alexej" };\ndb.Users.Add(user);\ndb.SaveChanges();
\n

Es gibt jedoch einen Haken: EF Core kann bei komplexen Abfragen langsam sein. Für hochbelastete Systeme verwenden Sie besser Dapper – ein Micro-ORM, das um ein Vielfaches schneller arbeitet, aber das manuelle Schreiben von SQL erfordert.

\n

Wann sollte man Dapper wählen?

\n
    \n
  • Wenn maximale Leistung benötigt wird
  • \n
  • Bei einfachen Abfragen (CRUD ohne komplexe Logik)
  • \n
  • Wenn Sie keine Angst vor SQL haben
  • \n
\n
using var connection = new SqlConnection(connectionString);\nvar users = connection.Query<User>("SELECT * FROM Users WHERE IsActive = @Active", new { Active = true });
\n\n

AutoMapper: Mapping ohne Schmerz

\n

Wenn Sie in C# programmieren, stoßen Sie ständig auf die Umwandlung eines Objekts in ein anderes. DTO → Entity, Entity → ViewModel. Manuelles Mapping ist langweilig und fehleranfällig. AutoMapper automatisiert diesen Prozess.

\n

Beispiel: Profil einrichten

\n
public class UserProfile : Profile\n{\n    public UserProfile()\n    {\n        CreateMap<User, UserDto>()\n            .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.FirstName} {src.LastName}"));\n    }\n}\n\n// Verwendung\nvar config = new MapperConfiguration(cfg => cfg.AddProfile<UserProfile>());\nvar mapper = config.CreateMapper();\nvar dto = mapper.Map<UserDto>(user);
\n

Tipp: Übertreiben Sie es nicht mit AutoMapper. Wenn das Mapping zu

Blogs

Buchempfehlungen