Client HTTP
Babel Licensing supporta HTTP come protocollo di trasporto alternativo a gRPC. Il trasporto HTTP è utile per le piattaforme o gli ambienti in cui gRPC (HTTP/2) non è disponibile o non è pratico, come le applicazioni .NET Framework meno recenti o gli ambienti di rete con restrizioni.
Per selezionare il trasporto HTTP, usa il metodo UseHttp() sull’oggetto di configurazione. Se viene chiamato UseHttp(), il client comunica con il Babel Licensing Service tramite la sua API REST invece che tramite gRPC.
Configurazione di base
Per configurare il client in modo che usi il trasporto HTTP:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp();
});Chiamando UseHttp() senza parametri si usano le impostazioni predefinite del client HTTP.
HttpClientHandler personalizzato
Puoi passare a UseHttp() una callback di configurazione per personalizzare le opzioni del client HTTP. La callback riceve un oggetto HttpClientOptions con le seguenti proprietà :
- Handler: ottiene o imposta l’
HttpClientHandlerusato per le richieste HTTP. - Timeout: ottiene o imposta il
TimeSpandel timeout del client HTTP.
SSL/TLS con certificati autofirmati
Quando ti connetti a un servizio che usa un certificato autofirmato, configura l’HttpClientHandler perché accetti il certificato:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});Certificati client
Per presentare un certificato client durante l’handshake SSL/TLS:
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
};
});
});Timeout personalizzato
Puoi specificare un timeout personalizzato per le richieste HTTP:
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
};
});
});Configurazione del proxy
Per instradare le richieste HTTP attraverso un 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 e UseGrpc a confronto
Il protocollo di trasporto dipende dal metodo che chiami sulla configurazione:
UseHttp(): usa l’API REST su HTTP/1.1. È compatibile con tutte le piattaforme .NET e con tutte le configurazioni di rete.UseGrpc(): usa gRPC su HTTP/2. Offre prestazioni migliori grazie alla serializzazione binaria e al multiplexing, ma richiede il supporto di HTTP/2.
Se non viene chiamato nessuno dei due metodi, il client usa per impostazione predefinita gRPC dove è supportato.