2

状況を想像してください(これは実際の状況です):

ラップトップにはWCFクライアントアプリケーションがあります。ラップトップはWiFiでインターネットに接続されています。ユーザーは、WCFサービスに接続された職場で自分のラップトップでいくつかの作業(応答要求操作)を行っています。

次に、ユーザーのラップトップはスリープダウンし、ユーザーは家に帰ります。自宅でユーザーがラップトップをウェイクアップし、HSPDA / 3Gモデム(異なるインターフェイスとIP)を接続して、クライアントアプリケーションで作業を続けたいと考えています。アプリケーションは閉じられていないことに注意してください。

ユーザー(クライアントアプリケーション)は認証されている必要があり、可能であれば、通信は暗号化されている必要があります。

ベストプラクティスは何ですか?操作ごとに新しいプロキシを作成しますか?認証を使用してnet.tcp接続を初期化する場合、これは非常に遅いはずです。

ソリューションbasicHttp接続(+ HTTPS)はInstanceContextMode.PerCallを使用していますか?速度とより高いペイロードが問題であることに注意してください。

または、最良の解決策は「wrapper(Func <>)」のようなものです。これには、操作が正常に終了するまでwhileループが含まれます(失敗すると、新しい接続が作成され、関数が再度呼び出されます)。

提案ありがとうございます

4

1 に答える 1

0

作業単位が必要である限り、私は常に接続を開いたままにしてきました。基本的に、接続は、アプリケーションが何らかの処理を実行している間のみ開いて使用できます (これらのプロセスには WCF 接続が必要です)。再接続を維持するためのオーバーヘッドが増える可能性があります (接続速度によっては、レイテンシが追加される可能性があります) が、動作する接続を持つことになるとより安全になります (失敗の可能性が最も低い)。私は通常、他のリソースのためにそれらのリソースを保存しています目的。

ただし、これはすべてアプリケーションの動作に依存します。クライアントが愚かで、サービスがすべての作業を行っている場合、すべての関数がサービスでメソッドを実行するため、接続を維持することが理にかなっている場合があります。ただし、接続が予期せず切断された場合に備えて、いくつかの障害チェックと再確立が行われます。

また、netTcpは よりもはるかに高速になりwsHttpます。そして、個人的には、接続を確立する際に多くの遅延が発生したnetTcpことはありません(ただし、あなたが行っている認証の種類はわかりません[私の場合、一般的にWindows認証を実装しています])

于 2012-10-18T13:09:59.740 に答える