1つのマシンで自作の WCF サービスを複数動かすとき、その1つ1つに異なるポートを割り当てるのって面倒。1つにまとめたいですよね。
そんな人に朗報です。NetTcpBinding なら、「Net.TCP ポート共有サービス」が使えます。使い方は簡単で、NetTcpBinding の PortSharingEnabled プロパティを true にするだけです。
コードで指定したのがこちら。
var host = new ServiceHost(typeof(FooService)); host.AddServiceEndpoint(typeof(IFooService), new NetTcpBinding() { PortSharingEnabled = true, // ポートを共有する! }, "net.tcp://localhost:8081/Foo"); host.Open();
構成ファイルでも指定できます。
<system.serviceModel> <bindings> <netTcpBinding> <!-- ポートを共有する --> <binding name="NetTcpPortShareBinding" PortSharingEnabled="true"/> </netTcpBinding> </bindings> </syatem.serviceModel>
これらはサービス側で指定してやれば OK。
あと、この機能を使うには『Net.Tcp Port Sharing Service』っていう Windows サービスが動いていないとダメです。[コントロールパネル]-[管理ツール]-[サービス] を起動し、状態が「開始」になっているか要確認。
デフォルトでは無効という話だったけど、既に動いていました。いつのまに動かしたんだろう…。あ、オチは無いです。