gRPC Web
El Babel Licensing Service admite gRPC Web porque permite que una gran variedad de aplicaciones, entre ellas las de Xamarin y UWP, interactúen con servicios gRPC. Con gRPC-Web, estas aplicaciones pueden llamar directamente a los servicios gRPC mediante el cliente gRPC Web y Protobuf.
La importancia de gRPC Web radica en su compatibilidad con HTTP/1.1 y con los navegadores. Mientras que el gRPC tradicional depende de características de HTTP/2 que no todos los navegadores y tecnologías admiten, gRPC Web tiene un protocolo ligeramente distinto que lo hace compatible con HTTP/1. Esto permite que las aplicaciones de navegador, incluidas las creadas con Xamarin y UWP, se beneficien del alto rendimiento y del bajo consumo de red de los mensajes binarios de gRPC.
gRPC Web elimina la necesidad de mecanismos de comunicación independientes o de soluciones alternativas para los clientes Xamarin, lo que facilita la integración del Babel Licensing Service en una gran variedad de aplicaciones, incluidas las destinadas a plataformas UWP.
Servidor
Para activar gRPC-Web en el Babel Licensing Service, realice los siguientes cambios de configuración:
Actualizar la configuración del punto de acceso de Kestrel
Actualice la configuración del punto de acceso de Kestrel en el archivo appsettings.json. Asegúrese de que la propiedad «Protocols» incluya «Http1AndHttp2» para activar los protocolos HTTP/1.1 y HTTP/2:
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2"
// other properties...
}
}Activar gRPC-Web en la sección Application
Establezca en true la propiedad «EnableGrpcWeb» de la sección «Application» del archivo appsettings.json. Esto indica que gRPC-Web debe estar activado. Por ejemplo:
"Application": {
"EnableGrpcWeb": true,
// other properties...
}Activar la compatibilidad con SSL/TLS
Active la compatibilidad con SSL/TLS en el proyecto del Babel Licensing Service para garantizar la negociación de protocolos mediante las capacidades ALPN que proporciona la extensión de la capa TLS.
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2",
"Certificate": {
"AllowInvalid": true,
"Path": "<cert file>.pfx",
"Password": "<cert password>"
}
}
}Al configurar el Babel Licensing Service con estos ajustes se activa la compatibilidad con gRPC-Web, que permite a las aplicaciones cliente basadas en navegador, incluidas las de Xamarin y UWP, comunicarse con el servicio mediante gRPC-Web. Así se consigue una integración fluida y una comunicación eficiente entre las aplicaciones cliente y el Babel Licensing Service, con las ventajas de gRPC para una transmisión de datos segura y de alto rendimiento.
Cliente
Para activar gRPC Web en su aplicación cliente y conectarla con el Babel Licensing Service, siga estos pasos:
- Añada a su proyecto la referencia al paquete NuGet:
Grpc.Net.Client.Web- En su código, configure el cliente BabelLicensing con el método
BabelLicensing.Configure. Establezca la propiedadServiceUrlen la URL del punto de acceso de su Babel Licensing Service.
BabelLicensing.Configure(config => {
config.ServiceUrl = "https://localhost:5005";
var certificate = new X509Certificate2("<cert file>.pfx", "<cert password>");
config.UseGrpc(options =>
{
options.HttpHandler = new GrpcWebHandler(new HttpClientHandler()
{
ClientCertificates = { certificate },
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
});
});
});En el fragmento de código anterior, sustituya <cert file>.pfx por la ruta de su archivo de certificado SSL/TLS y <cert password> por la contraseña del certificado.
Esta configuración prepara el cliente gRPC Web mediante el método de devolución de llamada UseGrpc y GrpcWebHandler. Permite al cliente comunicarse de forma segura con el Babel Licensing Service mediante el protocolo gRPC Web sobre HTTPS. El GrpcWebHandler se configura con un HttpClientHandler personalizado que incluye el certificado de cliente y acepta cualquier certificado de servidor con fines de desarrollo.
En un entorno de producción, asegúrese de gestionar y proteger correctamente los certificados: establezca AllowInvalid en false y quite ServerCertificateCustomValidationCallback del código cliente.
Con esta configuración, su aplicación cliente ya puede conectarse al Babel Licensing Service mediante gRPC Web, con una comunicación segura y eficiente entre el cliente y el servicio.