2011-06-19 9 views
1

バックグラウンドで実行されるC#アプリケーションがあります。このアプリケーションの実行には1〜10分かかりますが、開始から実行終了までに複数のWebメソッドを呼び出すWCFサービスと通信しています。実行時にクライアントのエンドポイントを再割り当て

プロキシオブジェクトが非常に多く作成されたり閉じたりするのを避けるため、プロセスの期間中に1つのプロキシオブジェクトがあります。私はWCFサービスのコピーが載っている場所にIISが設定されたサーバーボックスをいくつか持っており、両方のボックスを使って負荷を分散させたいのです。高価なロードバランシングソリューションがないため、メソッドコールごとに異なるサーバーボックスと通信するために、オンザフライでプロキシのエンドポイントアドレスを変更する必要があります。

私は、最初のメソッド呼び出し前にこれを試してみた:さらにラインの下にこれを変更すること

client.Endpoint.Address = new EndpointAddress("http://box1.wcfserviceaddress.com/MyService.svc"); 

は、最初に接続されたクライアントは、メソッド呼び出しを受け続けても効果や箱を持っていません。また、サービスインスタンス管理をセッションから通話に変更しても差はありません。

これを行うことができますか、メソッド呼び出しごとにクライアントを作成する必要がありますか?

よろしく、

F.

答えて

3

プロキシがICommunicationObjectを実装ClientBaseから誘導されます。 CommunicationObjectから派生したクラスまたはICommunicationObjectを実装したすべてのクラスは、同じ動作を共有します。Created状態でのみ設定できます。通信オブジェクトがCreated状態から移動すると、設定を変更することはできず、最初にプロキシを使用した後(その状態がOpenedに変更された)、その設定アドレスのために何の効果もありません。プロキシを新しいアドレスで取得する唯一の方法は、新しいアドレスを作成することです。

0

クライアントが作成されてオープンされると、私は99%確認しています(ダブルチェックは100%ではありません)ので、ABCは変更できません。サーバーごとにプロキシを実行する必要があります。

関連する問題