双方向通信を改善するため、.NET Framework 3.0からWCFの一部として新しい通信プロトコルである、Net.TCPが提供されている。このNet.TCPが来るSilverlight 4でも利用できるようになる。これによって、従来のHTTP Polling Duplexに比べてスループットが向上し、コネクションの数も数倍増える。
Silverlight 3ではHTTPによる双方向サービスのバインディングが利用できるようになった。これを利用すればサービスを定期的にポーリングすることで双方通信を仮想的に実現できる。Silverlight 4ではより良いソリューションを提供する。それは、Net.TCPポート共有サービスだ。HTTPとは違って、Net.TCPはパフォーマンスに優れたネイティブな双方向通信を実現するので、アプリケーションの挙動をより速くすることができる。また、ポートを複数のアプリケーションで共有することも可能だ。ただし、Silverlightが利用できるポートは4502-4534の範囲に限定されている。
WCFの開発マネージャであるMicrosoftのTomasz Janczuk氏によれば、 HTTPを使った双方向通信と比べて、Net.TCPはとても改善されている、とのことだ。具体的には次のような点が挙げられる。
- スループット – UIスレッドの5.5倍、ワーカースレッドの870倍高い
- クライアントの最大数– サーバは5から6倍のクライアント接続数をサポートする
このプロトコルは通信スピードが重要になるようなアプリケーションで利用するのが適しているだろう。大きな欠点のひとつとしては、利用するポートが通常はファイアウォールでブロックされているということだ。なので、公開されている外部向けのアプリケーションよりも、イントラネットのアプリケーションの方が利用しやすい。またSSLがサポートされていないのでセキュアではないのも問題だ。Janczuk氏が言うには、この問題は将来解決されるようだ。
関連リソース: WCFのためのSOAP/TCPトランスポート(英語)