HTTP-Client für C# (.NET): Überblick über die besten Bibliotheken
Bei der Entwicklung moderner Anwendungen in C# (.NET) besteht fast immer die Notwendigkeit, mit entfernten Webdiensten und APIs zu interagieren. Die Basisklasse HttpClient bietet alle notwendigen Funktionen, aber für komplexe Szenarien (Wiederholungsversuche, Serialisierung, bequeme Fluent-Schnittstelle) hat die Community mehrere leistungsstarke Wrapper-Bibliotheken entwickelt. In diesem Artikel betrachten wir die vier beliebtesten HTTP-Clients für C# (.NET), vergleichen ihre Funktionen und geben Codebeispiele.
1. HttpClient (in .NET integriert)
HttpClient ist die Standardklasse aus dem Namespace System.Net.Http, die in allen .NET-Versionen (einschließlich .NET Core, .NET 5/6/7/8) verfügbar ist. Sie ist die Grundlage, auf der alle anderen Bibliotheken aufbauen.
Vorteile:
- Erfordert keine Installation zusätzlicher Pakete (in der BCL enthalten).
- Volle Kontrolle über den Prozess des Sendens von Anfragen.
- Unterstützung für HTTP/1.1, HTTP/2, HTTP/3.
- Integrierte Unterstützung für gzip/deflate-Komprimierung.
- Möglichkeit der Arbeit mit Streams (Streaming).
Nachteile:
- Erfordert manuelle Verwaltung von Wiederholungsversuchen (Retry).
- Keine integrierte JSON-Serialisierung/Deserialisierung.
- Ausführlicher Code für Standardoperationen.
Anwendungsbeispiel:
using System.Net.Http;using System.Text.Json;using System.Threading.Tasks;
public class UserClient{ private readonly HttpClient _httpClient;
public UserClient() { _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("https://jsonplaceholder.typicode.com"); }
public async Task<User> GetUserAsync(int id) { var response = await _httpClient.GetAsync($"/users/{id}"); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(json); }
public async Task<User> CreateUserAsync(User user) { var json = JsonSerializer.Serialize(user); var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("/users", content); response.EnsureSuccessStatusCode(); var responseJson = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(responseJson); }}
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}2. RestSharp
RestSharp ist eine der ältesten und beliebtesten Bibliotheken für die Arbeit mit REST-APIs. Sie bietet eine bequeme Fluent-Schnittstelle, automatische JSON- und XML-Serialisierung/Deserialisierung sowie integrierte Fehlerbehandlung.
Vorteile:
- Einfache und intuitive API.
- Automatische Serialisierung/Deserialisierung.
- Integrierte Unterstützung für Authentifizierung (Basic, OAuth, JWT).
- Unterstützung für Datei-Uploads (multipart/form-data).
- Flexibles System zur Fehlerbehandlung und Wiederholungsversuchen.
Nachteile:
- Abhängigkeit von einem externen Paket (NuGet: RestSharp).
- Für einige Szenarien abstrahiert es HTTP übermäßig.
Anwendungsbeispiel:
using RestSharp;using System.Threading.Tasks;
public class UserClient{ private readonly RestClient _client;
public UserClient() { _client = new RestClient("https://jsonplaceholder.typicode.com"); }
public async Task<User> GetUserAsync(int id) { var request = new RestRequ Auch in der Bibliothek
node-cron: Aufgabenplaner für JavaScript (Node.js)
PM2 für JavaScript (Node.js): Vollständige Anleitung mit Beispielen