GraphQL in C# (.NET): Überblick über Bibliotheken und Werkzeuge
GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufordern, die sie tatsächlich benötigen. Im C# (.NET)-Ökosystem gibt es mehrere leistungsstarke Bibliotheken zur Implementierung von GraphQL-Servern und -Clients. In diesem Artikel betrachten wir die beiden beliebtesten: Hot Chocolate und GraphQL.NET. Beide Bibliotheken werden aktiv weiterentwickelt, sind Open Source und verfügen über eine hervorragende Dokumentation.
1. Hot Chocolate – Modernes Framework von ChilliCream
Hot Chocolate ist ein voll funktionsfähiges GraphQL-Framework für .NET, das sowohl Server- als auch Client-Komponenten unterstützt. Es integriert sich mit ASP.NET Core und Entity Framework Core und bietet praktische Attribute sowie automatische Schema-Generierung.
Installation und einfacher Server
Installieren Sie zunächst das Paket über NuGet:
dotnet add package HotChocolate.AspNetCoreErstellen Sie einen einfachen GraphQL-Server:
// Datentyp definieren
public class Book
{
public string Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
}
// Query-Klasse erstellen
public class Query
{
public Book GetBook() =>
new Book
{
Id = "1",
Title = "Krieg und Frieden",
Author = "Leo Tolstoi"
};
}
// Konfiguration in Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddGraphQLServer()
.AddQueryType<Query>();
var app = builder.Build();
app.MapGraphQL();
app.Run();Nach dem Start ist der Server unter /graphql erreichbar. Sie können eine Abfrage über einen beliebigen GraphQL-Client senden:
{
book {
title
author
}
}Hot Chocolate unterstützt Mutationen, Subscriptions, Filterung, Sortierung, Paginierung und die Integration mit Entity Framework über UseProjection, UseFiltering und UseSorting.
Beispiel mit einer Mutation
public class Mutation
{
public Book AddBook(string title, string author) =>
new Book { Id = Guid.NewGuid().ToString(), Title = title, Author = author };
}
// Registrierung
builder.Services
.AddGraphQLServer()
.AddQueryType<Query>()
.AddMutationType<Mutation>();2. GraphQL.NET – Leichtgewichtige und bewährte Bibliothek
GraphQL.NET (auch bekannt als graphql-dotnet) ist ein Port der ursprünglichen JavaScript-Implementierung von GraphQL nach C#. Es bietet manuelle Schemaerstellung über Typen und Felder, was volle Kontrolle über die API-Struktur ermöglicht.
Installation und Beispiel
dotnet add package GraphQL
dotnet add package GraphQL.SystemTextJson
dotnet add package GraphQL.Server.Transports.AspNetCoreErstellen wir einen einfachen Server:
// Typ definieren
public class BookType : ObjectGraphType<Book>
{
public BookType()
{
Field(x => x.Id);
Field(x => x.Title);
Field(x => x.Author);
}
}
// Schema erstellen
public class AppSchema : Schema
{
public AppSchema(IServiceProvider provider) : base(provider)
{
Query = provider.GetRequiredService<BookQuery>();
}
}
// Query
public class BookQuery : ObjectGraphType
{
public BookQuery()
{
Field<BookType>("book")
.Resolve(context => new Book
{
Id = "1",
Title = "Schuld und Sühne",
Author = "F.M. Dostojewski"
});
}
}
// Konfiguration Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<BookQuery>();
builder.Services.AddSingleton<AppSchema>();
builder.Services.AddGraphQL(b => b.AddSystemTextJson());
var app = builder.Build();\ Auch in der Bibliothek
Internationalisierung (i18n) in Swift für iOS und macOS
Jasypt Java: Vollständige Anleitung mit Beispielen
Generierung von PDF-Berichten in Java: Überblick über Bibliotheken und Werkzeuge
ORM für Java: Vergleich von Hibernate, MyBatis und JPA mit Beispielen