Silverlight4でnetTcpBindingの双方向通信を使う。

Silverlight4からnetTcpBindingが使えるようになり、
通信のパフォーマンスが大幅に向上したみたいなので、いろいろメモ。

VisualStudio2010でのSilverlightにおけるサービス参照の追加がより便利になりました。
外部のSvcutilのようなものを使わなくてもIDEが勝手にプロキシコード生成してくれます。


silverlight4をnettcpを使用する際に必要だったこと。
WCFサービス関連
silverlight4のDuplex通信では、request/reply型のcallbackが使用できないようです。
そのため、callbackのメソッドに
[OperationContract(IsOneWay = true, AsyncPattern = true)]
みたく、IsOneWayを宣言してやる必要があるようです。


■ポート関連
silverlight4で使用できるポートは、4502-4534に限られているようです。
また、ポート943を最初に使用するようです。
これらのポートを解放する必要がありました。

Silverlight TCP Socket Policy」
http://visualstudiogallery.msdn.microsoft.com/ja-JP/c4534af5-e864-42c2-b351-094593864e78
自動で943Portに確認しにきたものに対して返答してくれるプログラム。
これを起動しておけば、943への返答を自動で行ってくれるようです。


IIS関連
nettcpを使用するために、iisのウェブサイトに設定をする必要がある。
「バインドの編集」と「詳細設定」でnettcpを許可する。




詳しくは下記のページを参照するといいと思います。
http://www.silverlightshow.net/items/WCF-NET.TCP-Protocol-in-Silverlight-4.aspx

http://tomasz.janczuk.org/2009/11/wcf-nettcp-protocol-in-silverlight-4.html