gRPC Web
Babel Licensing Service は gRPC Web をサポートしています。これにより、Xamarin や UWP を含む幅広いアプリケーションが gRPC サービスとやり取りできます。gRPC-Web を使用すると、これらのアプリケーションは gRPC Web クライアントと Protobuf を使って gRPC サービスを直接呼び出せます。
gRPC Web の意義は、HTTP/1.1 およびブラウザーとの互換性にあります。従来の gRPC は HTTP/2 の機能に依存していますが、その機能はすべてのブラウザーや技術でサポートされているわけではありません。gRPC Web はプロトコルが少し異なり、HTTP/1 と互換性があります。そのため、Xamarin や UWP で作成されたものを含むブラウザーアプリケーションも、gRPC のバイナリメッセージによる高いパフォーマンスと少ないネットワーク使用量の恩恵を受けられます。
gRPC Web を使えば、Xamarin クライアント向けに別の通信の仕組みや回避策を用意する必要がなくなり、UWP プラットフォームを対象とするものを含む幅広いアプリケーションに Babel Licensing Service を組み込みやすくなります。
サーバー
Babel Licensing Service で gRPC-Web を有効にするには、構成を次のように変更します。
Kestrel エンドポイントの構成を更新する
appsettings.json ファイルで Kestrel エンドポイントの構成を更新します。HTTP/1.1 と HTTP/2 の両方のプロトコルを有効にするため、Protocols プロパティに「Http1AndHttp2」が含まれていることを確認してください。
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2"
// other properties...
}
}Application セクションで gRPC-Web を有効にする
appsettings.json ファイルの「Application」セクションにある EnableGrpcWeb プロパティを true に設定します。これは、gRPC-Web を有効にすることを示します。たとえば、次のようにします。
"Application": {
"EnableGrpcWeb": true,
// other properties...
}SSL/TLS のサポートを有効にする
Babel Licensing Service のプロジェクトで SSL/TLS のサポートを有効にして、TLS レイヤーの拡張である ALPN の機能によってプロトコルネゴシエーションが行われるようにします。
"Endpoints": {
"gRPC": {
"Url": "https://localhost:5005",
"Protocols": "Http1AndHttp2",
"Certificate": {
"AllowInvalid": true,
"Path": "<cert file>.pfx",
"Password": "<cert password>"
}
}
}これらの設定で Babel Licensing Service を構成すると、gRPC-Web のサポートが有効になり、Xamarin や UWP のアプリケーションを含むブラウザーベースのクライアントアプリケーションが、gRPC-Web を使ってサービスと通信できるようになります。これにより、クライアントアプリケーションと Babel Licensing Service をスムーズに統合して効率よく通信でき、安全で高パフォーマンスなデータ転送という gRPC の利点を活用できます。
クライアント
クライアントアプリケーションで gRPC Web を有効にして Babel Licensing Service に接続するには、次の手順に従います。
- プロジェクトに次の NuGet パッケージ参照を追加します。
Grpc.Net.Client.Web- コード内で、
BabelLicensing.Configureメソッドを使用して BabelLicensing クライアントを設定します。ServiceUrlプロパティには、Babel Licensing Service のエンドポイントの URL を設定します。
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
});
});
});上のコードでは、<cert file>.pfx を SSL/TLS 証明書ファイルのパスに、<cert password> を証明書のパスワードに置き換えてください。
この構成は、UseGrpc コールバックメソッドと GrpcWebHandler を使用して gRPC Web クライアントをセットアップします。これにより、クライアントは HTTPS 上の gRPC Web プロトコルで Babel Licensing Service と安全に通信できます。GrpcWebHandler には、クライアント証明書を含み、開発用にどのサーバー証明書も受け入れるカスタムの HttpClientHandler を設定しています。
本番環境では、AllowInvalid を false に設定し、クライアントコードから ServerCertificateCustomValidationCallback を削除して、証明書を適切に扱い、保護してください。
この構成により、クライアントアプリケーションは gRPC Web を使って Babel Licensing Service に接続でき、クライアントとサービスの間で安全かつ効率的に通信できます。