阅读990 返回首页    go 阿里云 go 技术社区[云栖]


WCF后续之旅(14):TCP端口共享

在下面的例子中,我通过两个不同的控制台应用程序对两个服务,Service1和Service2进行寄宿,两个服务的终结点地址共享相同的端口:  

   1: using(ServiceHost serviceHost = new ServiceHost(typeof(Service1)))
   2: {
   3:        serviceHost.AddServiceEndpoint(typeof(IService1), new NetTcpBinding(), "net.tcp://127.0.0.1:9999/service1");
   4:        serviceHost.Open();
   5:        Console.Read();
   6: } 
   1: using(ServiceHost serviceHost = new ServiceHost(typeof(Service2)))
   2: {
   3:        serviceHost.AddServiceEndpoint(typeof(IService2), new NetTcpBinding(), "net.tcp://127.0.0.1:9999/service2");
   4:        serviceHost.Open();
   5:        Console.Read();
   6: } 

TCP Port Sharing2

二、Net.TCP Port Sharing Service

TCP Port Sharing

三 、基于TCP端口共享的编程

注:通过“开始”-〉“控制面板”-〉“管理工具”-〉服务,打开如下图所示的“服务对话框”,然后定位到Net.TCP Port Sharing Service。

 

   1: public class NetTcpBinding : Binding, IBindingRuntimePreferences
   2: {
   3:       // ... ...
   4:       public bool PortSharingEnabled { get; set; }
   5: } 

 

   1: using(ServiceHost serviceHost = new ServiceHost(typeof(Service1)))
   2: {
   3:       NetTcpBinding binding = new NetTcpBinding();
   4:       binding.PortSharingEnabled = true;
   5:       serviceHost.AddServiceEndpoint(typeof(IService1),binding,"net.tcp://127.0.0.1:9999/service1");
   6:       serviceHost.Open();
   7:       Console.Read();
   8: } 

   1: <configuration>
   2:     <system.serviceModel>
   3:         <bindings>
   4:             <netTcpBinding>
   5:                 <binding name="portSharingBinding" portSharingEnabled="true" />
   6:             </netTcpBinding>
   7:         </bindings>
   8:         <services>
   9:             <service name="Artech.WcfServices.Services.CalculateService">
  10:                 <endpoint binding="netTcpBinding"   bindingConfiguration="portSharingBinding"
  11:                     contract="Artech.WcfServices.Contracts.ICalculate" />
  12:             </service>
  13:         </services>
  14:     </system.serviceModel>
  15: </configuration>

WCF后续之旅: 
WCF后续之旅(1): WCF是如何通过Binding进行通信的 
WCF后续之旅(2): 如何对Channel Layer进行扩展——创建自定义Channel 
WCF后续之旅(3): WCF Service Mode Layer 的中枢—Dispatcher 
WCF后续之旅(4):WCF Extension Point 概览 
WCF后续之旅(5): 通过WCF Extension实现Localization 
WCF后续之旅(6): 通过WCF Extension实现Context信息的传递 
WCF后续之旅(7):通过WCF Extension实现和Enterprise Library Unity Container的集成 
WCF后续之旅(8):通过WCF Extension 实现与MS Enterprise Library Policy Injection Application Block 的集成 
WCF后续之旅(9):通过WCF的双向通信实现Session管理[Part I] 
WCF后续之旅(9): 通过WCF双向通信实现Session管理[Part II] 
WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance 
WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity) 
WCF后续之旅(12): 线程关联性(Thread Affinity)对WCF并发访问的影响 
WCF后续之旅(13): 创建一个简单的WCF SOAP Message拦截、转发工具[上篇] 
WCF后续之旅(13):创建一个简单的SOAP Message拦截、转发工具[下篇] 
WCF后续之旅(14):TCP端口共享 
WCF后续之旅(15): 逻辑地址和物理地址 
WCF后续之旅(16): 消息是如何分发到Endpoint的--消息筛选(Message Filter) 
WCF后续之旅(17):通过tcpTracer进行消息的路由



作者:蒋金楠
微信公众账号:大内老A
微博:www.weibo.com/artech
如果你想及时得到个人撰写文章以及着作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文链接

最后更新:2017-10-30 16:34:35

  上一篇:go  增强电子产品寿命,新型LLC谐振控制器是如何做到的?
  下一篇:go  三步教你搭建给黑白照片上色的神经网络 !(附代码)