2011-10-21 34 views
1

指定されたタスクが完了した場合、クライアントと通信するTCPサーバーを開発しています。だから、私はサーバ上でソケットを開き、クライアントはそこに接続します。
この接続は、クライアントへのデータ転送にも使用できます。それはかなり大丈夫です。
しかし、接続が中止され、そのようなものはどうなりますか?要求処理時の永続的TCP接続または接続

クライアントが通信する必要があるときに、毎回サーバーに接続することを考えました。しかし、どのようにクライアントにデータを送り返すことができますか?
クライアント側でもソケットを開くことができますか?

編集:
私はWCFも考慮しました。私はそれがサーバーのクライアント階層を実装するための非常に良い方法だと思う。
あなたはどう思いますか?

答えて

0

これは残りの要件によって異なります。 1日に1回送信される可能性があるメッセージを話している場合、クライアントが定期的にサーバーに接続してメッセージがないかどうかを確認するのが適切な解決策です。私たちがより一般的でより多くのことを急いで話しているのであれば、正しい解決策は、クライアントが常にサーバーとの接続を開いたままにすることかもしれません。場合によっては、可能であれば、サーバーがクライアントに「後方に」接続することが適切な解決策である可能性があります。たとえば、「バックワード」接続の場合、クライアントからサーバーへの永続的な接続にフォールバックするオプションがありますできません。

,の記事、特にlong pollingのセクションを参照してください。

+0

イベントがあるので、常に多くの通信がありますクライアント。 – CSchulz

+0

私はWCFについて考えました。どう思いますか? – CSchulz

0

サーバからクライアントに接続する実行時POVから、これをサポートするネットワーク環境(ファイアウォール/ IDSなど)が必要です。

これが常に当てはまると確信できない場合、このオプションはIMOを排除しています。

オープン接続を維持するクライアントに関しては:私はあなたがクライアントの実装は、任意の接続の問題を検出し、自動的に再接続していることを確認する必要があります...これは良いオプションだと思う

...

どのソリューションを実装しても、クライアントごとにイベントキューを実装する必要があるかもしれません...これらのキューは永続化する必要がある場合もあります。 (シリアライゼーション、オプションのセッション管理、トランスポートセキュリティなど)純粋なTCP/IPベースのソリューションがパフォーマンスに優れているかもしれませんが... ...