デュプレックス非同期コールのパフォーマンス上の利点を否定することはできませんが、いくつかの点では気になります。WCFデュプレックスクライアントのベストプラクティス
クライアントオブジェクトがインスタンス化されていると、WCFは特定のクライアントサービスインスタンスがコールバック引数を受け取るように指示できますか?
これはいい考えですか?なぜそうでないのであれば?
new DuplexChannelFactory<IServerWithCallback>(
new ClientService(),
new NetTcpBinding(),
new EndpointAddress("net.tcp://localhost:1234/"+Guid.NewGuid()))
上記の仮想パスは、それを破棄することができますどのように予約されている場合。私はクライアントサービスの寿命をかなり短くしたい。 IEは要求を出して応答を受け取り、受け取ったらそれを殺す。クライアントサービスのライフタイムを短くすることでパフォーマンスを低下させ、プーリングしてより長く生き続けることが難しい。
タイムアウトの問題を避けることです。完了したら、ASAPを受信、送信、廃棄します。コンベンションでは、クライアントサービスを渡すことはできません。情報が必要な場合は、EF/L2Sなどと同じように簡単に新しいものを作成してください。
クライアントからセッションを削除するにはどうすればいいですか?すなわち、クライアントがセッションを終了しないようにしたい - 私はそれに応じて私の操作を飾ることができると知っているが、特定の条件が満たされたときにサービスがプログラム的に終了するようにしたい。
ファイアウォールの問題を解決するためにポートとフォワードを貼り付けることができますが、クライアントがロードバランサの背後に座っていれば心配です。サービスは、どの特定のサーバーを呼び出すのかをどのように知っていますか?
NetTcpBindingまたはデュアルHttpバインディングの場合は、この回答は真ですか? – Yaniv