Skip to Content
Nuova versione 12 disponibile 🎉

Client HTTP

Configurare il trasporto HTTP nelle applicazioni client di Babel Licensing

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’HttpClientHandler usato per le richieste HTTP.
  • Timeout: ottiene o imposta il TimeSpan del 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.

Last updated on