まず、いくつかの質問を自問する必要があります。
- 私の「クライアント」は Web ブラウザですか、それとも実行可能ファイルですか?
- サーバーに接続するクライアントの数は?
- クライアントにデータが送信される頻度は?
- クライアントがすぐにデータを受信すること (1 秒または 2 秒の遅延ではなく) はどれほど重要ですか?
クライアントが Web ブラウザーの場合、オプションはさらに制限されます。ガイダンスについては、 Cometを参照してください。他の誰かが言及したように、 ASP.NET で Comet を実行する方法を説明する良いブログ投稿があります。
多くのクライアントを想定していない場合は、クライアントからサーバーへの接続を開くことが実行可能な解決策になる可能性があります。情報と基本的な例については、次の MSDN ページを参照してください。 - TcpListener
- TcpClient
多くのクライアント (サーバー ハードウェアによっては 50 以上) が予想される場合、オプションは他の質問への回答によって異なります。
クライアントが頻繁にデータを取得し、短い (数秒) の遅延が許容される場合、ポーリングは簡単な解決策です。クライアントから実装を非表示にして、データがプッシュされているように見せることができますが、実際にはクライアントにスレッドがあります。数秒ごとにポーリングします。
クライアントがデータをあまり頻繁に取得しない場合は、Cometのようなものが良い選択肢になる可能性があります。.NET ソリューションを探している場合は、「Long Polling WCF」を検索してください。
更新:
クライアントが Silverlight であると述べたので、次のブログ投稿を強くお勧めします。
- ソケットを使用してサーバーからデータを送信する ( here、hereおよびhere )
- WCF Duplex Service を使用したデータの送信 (こことここ)
WCF Duplex Service は、設定されたメッセージと応答を使用するという点で優れているため、テキストまたはバイナリ データを自分で解析する必要はありません。これは基本的に、Comet for Silverlight のバージョンです。