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