gRPC Web
Der Babel Licensing Service unterstützt gRPC Web, weil damit viele Arten von Anwendungen, darunter Xamarin und UWP, mit gRPC-Diensten kommunizieren können. Mit gRPC-Web können diese Anwendungen gRPC-Dienste über den gRPC-Web-Client und Protobuf direkt aufrufen.
Die Bedeutung von gRPC Web liegt in seiner Kompatibilität mit HTTP/1.1 und Browsern. Das herkömmliche gRPC stützt sich auf Funktionen von HTTP/2, die nicht von allen Browsern und Technologien unterstützt werden. gRPC Web verwendet ein leicht abweichendes Protokoll, das mit HTTP/1 kompatibel ist. Dadurch profitieren Browseranwendungen, auch solche auf Basis von Xamarin und UWP, von der hohen Leistung und der geringen Netzwerklast der binären Nachrichten von gRPC.
Mit gRPC Web sind für Xamarin-Clients keine getrennten Kommunikationsmechanismen oder Umgehungslösungen mehr nötig. Das erleichtert die Integration des Babel Licensing Service in viele Arten von Anwendungen, auch in solche für UWP-Plattformen.
Server
Um gRPC-Web im Babel Licensing Service einzuschalten, nehmen Sie die folgenden Konfigurationsänderungen vor:
Kestrel-Endpunktkonfiguration anpassen
Passen Sie die Konfiguration des Kestrel-Endpunkts in der Datei appsettings.json an. Achten Sie darauf, dass die Eigenschaft „Protocols“ den Wert „Http1AndHttp2“ enthält, damit die Protokolle HTTP/1.1 und HTTP/2 beide eingeschaltet sind:
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2"
// other properties...
}
}gRPC-Web im Abschnitt Application einschalten
Setzen Sie die Eigenschaft „EnableGrpcWeb“ im Abschnitt „Application“ der Datei appsettings.json auf true. Damit wird gRPC-Web eingeschaltet. Zum Beispiel:
"Application": {
"EnableGrpcWeb": true,
// other properties...
}SSL/TLS-Unterstützung einschalten
Schalten Sie im Projekt des Babel Licensing Service die SSL/TLS-Unterstützung ein, damit die Protokollaushandlung über die ALPN-Funktionen der TLS-Erweiterung erfolgen kann.
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2",
"Certificate": {
"AllowInvalid": true,
"Path": "<cert file>.pfx",
"Password": "<cert password>"
}
}
}Mit diesen Einstellungen schalten Sie im Babel Licensing Service die Unterstützung für gRPC-Web ein. Browserbasierte Clientanwendungen, darunter Xamarin- und UWP-Anwendungen, können dann über gRPC-Web mit dem Dienst kommunizieren. Das ermöglicht eine nahtlose Integration und eine effiziente Kommunikation zwischen den Clientanwendungen und dem Babel Licensing Service und nutzt die Vorteile von gRPC für eine sichere und leistungsfähige Datenübertragung.
Client
Um gRPC Web in Ihrer Clientanwendung einzuschalten und sie mit dem Babel Licensing Service zu verbinden, gehen Sie so vor:
- Fügen Sie Ihrem Projekt die NuGet-Paketreferenz hinzu:
Grpc.Net.Client.Web- Konfigurieren Sie in Ihrem Code den BabelLicensing-Client mit der Methode
BabelLicensing.Configure. Setzen Sie die EigenschaftServiceUrlauf die URL des Endpunkts Ihres 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
});
});
});Ersetzen Sie im obigen Codeausschnitt <cert file>.pfx durch den Pfad zu Ihrer SSL/TLS-Zertifikatsdatei und <cert password> durch das Passwort des Zertifikats.
Diese Konfiguration richtet den gRPC-Web-Client mit der Callback-Methode UseGrpc und dem GrpcWebHandler ein. Der Client kann damit über das gRPC-Web-Protokoll und HTTPS sicher mit dem Babel Licensing Service kommunizieren. Der GrpcWebHandler wird mit einem eigenen HttpClientHandler konfiguriert, der das Clientzertifikat enthält und für Entwicklungszwecke jedes Serverzertifikat akzeptiert.
Achten Sie in einer Produktionsumgebung auf den korrekten und sicheren Umgang mit Zertifikaten: Setzen Sie AllowInvalid auf false und entfernen Sie den ServerCertificateCustomValidationCallback aus dem Clientcode.
Mit dieser Konfiguration kann sich Ihre Clientanwendung über gRPC Web mit dem Babel Licensing Service verbinden, und Client und Dienst kommunizieren sicher und effizient.