Cliente HTTP
Babel Licensing admite HTTP como protocolo de transporte alternativo a gRPC. El transporte HTTP es útil en plataformas o entornos en los que gRPC (HTTP/2) no está disponible o no resulta práctico, como las aplicaciones antiguas de .NET Framework o los entornos de red restringidos.
Para seleccionar el transporte HTTP, use el método UseHttp() del objeto de configuración. Si se llama a UseHttp(), el cliente se comunica con el Babel Licensing Service a través de su API REST en lugar de gRPC.
Configuración básica
Para configurar el cliente de modo que use el transporte HTTP:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp();
});Al llamar a UseHttp() sin parámetros se usan los ajustes predeterminados del cliente HTTP.
HttpClientHandler personalizado
Puede pasar a UseHttp() una devolución de llamada de configuración para personalizar las opciones del cliente HTTP. La devolución de llamada recibe un objeto HttpClientOptions con las propiedades siguientes:
- Handler: obtiene o establece el
HttpClientHandlerque se usa para las solicitudes HTTP. - Timeout: obtiene o establece el
TimeSpandel tiempo de espera del cliente HTTP.
SSL/TLS con certificados autofirmados
Cuando se conecte a un servicio que usa un certificado autofirmado, configure el HttpClientHandler para que acepte el certificado:
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});Certificados de cliente
Para presentar un certificado de cliente durante el protocolo de enlace 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
};
});
});Tiempo de espera personalizado
Puede especificar un tiempo de espera personalizado para las solicitudes 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
};
});
});Configuración del proxy
Para dirigir las solicitudes HTTP a través de 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 frente a UseGrpc
El protocolo de transporte lo determina el método al que se llama en la configuración:
UseHttp(): usa la API REST sobre HTTP/1.1. Es compatible con todas las plataformas .NET y con todas las configuraciones de red.UseGrpc(): usa gRPC sobre HTTP/2. Ofrece mejor rendimiento gracias a la serialización binaria y a la multiplexación, pero requiere compatibilidad con HTTP/2.
Si no se llama a ninguno de los dos métodos, el cliente usa gRPC de forma predeterminada allí donde se admite.