gRPC Web
Il Babel Licensing Service supporta gRPC Web perché permette a un’ampia gamma di applicazioni, comprese quelle Xamarin e UWP, di interagire con i servizi gRPC. Con gRPC-Web queste applicazioni possono chiamare direttamente i servizi gRPC usando il client gRPC Web e Protobuf.
L’importanza di gRPC Web sta nella sua compatibilità con HTTP/1.1 e con i browser. Mentre gRPC tradizionale si basa su funzionalità di HTTP/2 che non tutti i browser e le tecnologie supportano, gRPC Web ha un protocollo leggermente diverso che lo rende compatibile con HTTP/1. Le applicazioni per browser, comprese quelle realizzate con Xamarin e UWP, possono così beneficiare delle prestazioni elevate e del ridotto uso della rete offerti dai messaggi binari di gRPC.
gRPC Web elimina la necessità di meccanismi di comunicazione separati o di soluzioni alternative per i client Xamarin, e rende più semplice integrare il Babel Licensing Service in un’ampia gamma di applicazioni, comprese quelle destinate alle piattaforme UWP.
Server
Per abilitare gRPC-Web nel Babel Licensing Service devi apportare le seguenti modifiche alla configurazione:
Aggiorna la configurazione dell’endpoint Kestrel
Aggiorna la configurazione dell’endpoint Kestrel nel file appsettings.json. Assicurati che la proprietà “Protocols” includa “Http1AndHttp2” per abilitare entrambi i protocolli HTTP/1.1 e HTTP/2:
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2"
// other properties...
}
}Abilita gRPC-Web nella sezione Application
Imposta la proprietà “EnableGrpcWeb” nella sezione “Application” del file appsettings.json su true. Questo indica che gRPC-Web deve essere abilitato. Per esempio:
"Application": {
"EnableGrpcWeb": true,
// other properties...
}Abilita il supporto SSL/TLS
Abilita il supporto SSL/TLS nel progetto del Babel Licensing Service per garantire la negoziazione del protocollo tramite le capacità ALPN fornite dall’estensione del livello TLS.
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2",
"Certificate": {
"AllowInvalid": true,
"Path": "<cert file>.pfx",
"Password": "<cert password>"
}
}
}Configurando il Babel Licensing Service con queste impostazioni abiliti il supporto gRPC-Web, che permette alle applicazioni client basate su browser, comprese le applicazioni Xamarin e UWP, di comunicare con il servizio tramite gRPC-Web. Ne risultano un’integrazione semplice e una comunicazione efficiente tra le applicazioni client e il Babel Licensing Service, con i vantaggi di gRPC per una trasmissione dei dati sicura e ad alte prestazioni.
Client
Per abilitare gRPC Web nella tua applicazione client e connetterla al Babel Licensing Service, segui questi passi:
- Aggiungi al tuo progetto il riferimento al pacchetto NuGet:
Grpc.Net.Client.Web- Nel codice, configura il client BabelLicensing con il metodo
BabelLicensing.Configure. Imposta la proprietĂServiceUrlsull’URL dell’endpoint del tuo 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
});
});
});Nel frammento di codice qui sopra, sostituisci <cert file>.pfx con il percorso del file del tuo certificato SSL/TLS e <cert password> con la password del certificato.
Questa configurazione imposta il client gRPC Web con il metodo di callback UseGrpc e GrpcWebHandler. Permette al client di comunicare in modo sicuro con il Babel Licensing Service usando il protocollo gRPC Web su HTTPS. GrpcWebHandler è configurato con un HttpClientHandler personalizzato che include il certificato client e, ai fini dello sviluppo, accetta qualsiasi certificato del server.
In un ambiente di produzione assicurati di gestire e proteggere correttamente i certificati, impostando AllowInvalid su false e rimuovendo ServerCertificateCustomValidationCallback dal codice client.
Con questa configurazione la tua applicazione client può connettersi al Babel Licensing Service tramite gRPC Web, con una comunicazione sicura ed efficiente tra il client e il servizio.