Windowsサービスとして実行されている別の.netアプリケーションによって公開されるwcfサービスを使用する.netwinformアプリケーションをまとめました。
通信は同じマシン内で行われるため、同じマシンでのプロセス間通信に最適なNetNamedPipeを通信チャネルとして選択しました。
.net Windowsサービスでwcfサービスを定義するときに、正しいプロパティの選択肢を使用しているかどうかを知りたいです。
WCFサービスの動作は次のように定義されます。
[ServiceBehavior(
ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.Single)]
UIクライアントによってwcfサービスメソッドが呼び出されるたびにwcfサービス内のオブジェクトが再作成されないことがわかるように、「InstanceContextMode」をシングルとして選択しました。
ただし、MSDNで選択するConcurrencyModeプロパティを読んでいるときに、少し混乱しました。基本的なレベルでは、ConcurrencyModeプロパティが、wcfサービスが単一、複数、または再入可能な呼び出しをサポートするかどうかを決定することを理解しています。
つまり、UIクライアントアプリケーションがマルチスレッドであり、それらのスレッドからwcfサービスメソッドを呼び出す場合は、「同時実行」モードを「複数」として選択し、UIクライアントがマルチスレッドでない場合は、「同時実行」を選択する必要があります。 「シングル」としてのモード?UIクライアントアプリケーションが複数のスレッドを実行していません。すべての操作は、イベントハンドラーを介してメインUIスレッドで実行されます(ボタンのクリック、コンボボックスの選択など)。
Windowsテストマシンにアプリケーションをインストールした後、UIクライアントがwcfサービスに接続できない場合があります。wcfクライアントオブジェクトのConnectメソッドの呼び出しを待機し続け、最終的にタイムアウトします。それが私が行った「ConcurrencyMode」の選択に関連しているかどうかを知りたいです。それとも、これは「NetNamedPipe」通信チャネルの問題ですか?
ご意見をお聞かせください。
前もって感謝します。
サブブ