HTTP-Client
Babel Licensing unterstützt HTTP als alternatives Transportprotokoll zu gRPC. Der HTTP-Transport ist für Plattformen oder Umgebungen nützlich, in denen gRPC (HTTP/2) nicht verfügbar oder nicht praktikabel ist, etwa für ältere .NET-Framework-Anwendungen oder eingeschränkte Netzwerkumgebungen.
Um den HTTP-Transport zu wählen, rufen Sie die Methode UseHttp() des Konfigurationsobjekts auf. Wird UseHttp() aufgerufen, kommuniziert der Client über die REST-API statt über gRPC mit dem Babel Licensing Service.
Grundkonfiguration
So konfigurieren Sie den Client für den HTTP-Transport:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp();
});Ein Aufruf von UseHttp() ohne Parameter verwendet die Standardeinstellungen des HTTP-Clients.
Benutzerdefinierter HttpClientHandler
Sie können UseHttp() einen Konfigurations-Callback übergeben, um die Optionen des HTTP-Clients anzupassen. Der Callback erhält ein HttpClientOptions-Objekt mit den folgenden Eigenschaften:
- Handler: Ruft den
HttpClientHandlerfür HTTP-Anfragen ab oder legt ihn fest. - Timeout: Ruft die
TimeSpanfür das Timeout des HTTP-Clients ab oder legt sie fest.
SSL/TLS mit selbstsignierten Zertifikaten
Wenn Sie sich mit einem Dienst verbinden, der ein selbstsigniertes Zertifikat verwendet, konfigurieren Sie den HttpClientHandler so, dass er das Zertifikat akzeptiert:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});Clientzertifikate
So legen Sie beim SSL/TLS-Handshake ein Clientzertifikat vor:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
var certificate = new X509Certificate2("<cert file>.pfx", "<cert password>");
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ClientCertificates = { certificate },
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
};
});
});Benutzerdefiniertes Timeout
Sie können für HTTP-Anfragen ein eigenes Timeout angeben:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Timeout = TimeSpan.FromSeconds(10);
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});Proxy-Konfiguration
So leiten Sie HTTP-Anfragen über einen Proxy:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
Proxy = new WebProxy("http://proxy-server:8080")
{
UseDefaultCredentials = true
}
};
});
});UseHttp und UseGrpc im Vergleich
Welches Transportprotokoll verwendet wird, hängt davon ab, welche Methode Sie in der Konfiguration aufrufen:
UseHttp(): Verwendet die REST-API über HTTP/1.1. Kompatibel mit allen .NET-Plattformen und Netzwerkkonfigurationen.UseGrpc(): Verwendet gRPC über HTTP/2. Bietet durch binäre Serialisierung und Multiplexing eine bessere Leistung, setzt aber HTTP/2-Unterstützung voraus.
Wird keine der beiden Methoden aufgerufen, verwendet der Client standardmäßig gRPC, wo es unterstützt wird.