2

負荷分散されたシナリオでホストされているWCFサービスがあります。サービスはIISを使用してホストされます。負荷分散された2つのサーバーがあります。

以下はend pointsサーバー内です。 https://labA.myCompany.com:44330/MyService/InternalService.svc https://labB.myCompany.com:44330/MyService/InternalService.svc

host base address

baseAddress=" https://test-LoadBalanced.myCompany.com/MyService". 

このホストベースアドレスは、ロードバランシングされたアドレスからのものです。

https://test-LoadBalanced.myCompany.com/MyService/InternalService.svcと入力 すると、サービスページが表示されます。その中で、ServerAボックスのエンドポイントアドレスとサーバーBボックスのエンドポイントアドレスのwsdlリンクを取得することがあります。

参照

WCFサービスエンドポイントとホストベースアドレスの質問に対する回答は次のとおりです。

IISでWCFサービスをホストする場合、ベースアドレスは.svcファイルへのURLのみにすることができます。

以下は、WCFの詳細なアドレス指定からのものです

クライアントはサービスのベースアドレスを認識しておらず、ネットワークの側で同様の何かをサポートする必要はありません。その結果、クライアント側のオブジェクトモデルまたは構成セクションにベースアドレスに関連するものは何も見つかりません。クライアントは特定のエンドポイントを選択するだけで、常に絶対アドレスが設定され、その絶対アドレスによって送信時に使用されるアドレスが決まります。

負荷分散から

デフォルトでは、BasicHttpBindingはKeep-Alive値を持つメッセージで接続HTTPヘッダーを送信します。これにより、クライアントは、それらをサポートするサービスへの永続的な接続を確立できます。この構成では、以前に確立された接続を再利用して後続のメッセージを同じサーバーに送信できるため、スループットが向上します。ただし、接続を再利用すると、クライアントが負荷分散ファーム内の特定のサーバーに強く関連付けられる可能性があり、ラウンドロビン負荷分散の効果が低下します。この動作が望ましくない場合は、CustomBindingまたはユーザー定義のBindingでKeepAliveEnabledプロパティを使用して、サーバーでHTTPキープアライブを無効にすることができます。

クライアント

負荷分散されたアドレスを使用してクライアントを作成しました。ただし、クライアント構成では、エンドポイントアドレスはサーバーAボックスのアドレスです。負荷分散されたアドレスではありません。

質問

では、クライアントはどのようにして負荷分散パフォーマンスの利点を活用できるのでしょうか。サービス操作を取得するために常にサーバーAにヒットしますね。

4

2 に答える 2

1

サービスの負荷分散されたエンドポイントを指すようにクライアントのコード/構成を変更します。

ベースアドレスはサーバーのみの問題です。これは、他のすべての相対URIのベースとなるベースURIを指定する方法を提供します。

クライアントがHTTPメッセージをロードバランサーに送信する場合、それらはサーバーに転送されます。これを行うには、サービスのロードバランサーを使用してクライアントを構成するだけです。

クライアントがLBの背後にあるサーバーとスティッキーな関係を形成するのを防ぐために、サーバーでもHTTPを無効にすることをお勧めします。keep-alive

于 2013-03-15T13:56:20.493 に答える
1

WSDLは、クライアントアプリケーションの設計時にのみ使用されます。ウィザードがすべてのクライアントクラスを作成したら、代わりにクライアントアプリケーションをロードバランサーに向けることができます。

于 2013-03-15T14:01:16.507 に答える