HTTP クライアント
Babel Licensing は、gRPC に代わるトランスポートプロトコルとして HTTP をサポートしています。HTTP トランスポートは、古い .NET Framework アプリケーションや制限のあるネットワーク環境など、gRPC(HTTP/2)が利用できない、または実用的でないプラットフォームや環境で役立ちます。
HTTP トランスポートを選択するには、構成オブジェクトの UseHttp() メソッドを使用します。UseHttp() を呼び出すと、クライアントは gRPC ではなく REST API を通じて Babel Licensing Service と通信します。
基本的な構成
HTTP トランスポートを使用するようにクライアントを設定するには、次のようにします。
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp();
});UseHttp() をパラメーターなしで呼び出すと、既定の HTTP クライアント設定が使用されます。
カスタム HttpClientHandler
UseHttp() に構成コールバックを渡すと、HTTP クライアントのオプションをカスタマイズできます。コールバックは、次のプロパティを持つ HttpClientOptions オブジェクトを受け取ります。
- Handler:HTTP 要求に使用する
HttpClientHandlerを取得または設定します。 - Timeout:HTTP クライアントのタイムアウトを表す
TimeSpanを取得または設定します。
自己署名証明書を使用する SSL/TLS
自己署名証明書を使用するサービスに接続する場合は、その証明書を受け入れるように HttpClientHandler を設定します。
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});クライアント証明書
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
};
});
});カスタムタイムアウト
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
};
});
});プロキシの構成
HTTP 要求をプロキシ経由でルーティングするには、次のようにします。
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 と UseGrpc の比較
トランスポートプロトコルは、構成で呼び出すメソッドによって決まります。
UseHttp():HTTP/1.1 上の REST API を使用します。すべての .NET プラットフォームとネットワーク構成に対応しています。UseGrpc():HTTP/2 上の gRPC を使用します。バイナリシリアル化と多重化によってパフォーマンスが向上しますが、HTTP/2 のサポートが必要です。
どちらのメソッドも呼び出さない場合、クライアントは、サポートされている環境では既定で gRPC を使用します。