在 Windows Communication Foundation (WCF) 应用程序中使用 net.tcp:// 端口共享的最简单方式是使用 NetTcpBinding 公开一个服务。
此绑定提供了一个 PortSharingEnabled 属性,该属性控制是否为配置了此绑定的服务启用 net.tcp:// 端口共享。
下面的过程演示如何使用 NetTcpBinding 类打开一个位于统一资源标识符 (URI) net.tcp://localhost/MyService 上的终结点(首先使用代码,然后使用配置元素)。
使用代码在 NetTcpBinding 上启用 net.tcp:// 端口共享
-
创建一个服务以实现一个名为 IMyService 的协定,并将该服务命名为 MyService。
[ServiceContract] interface IMyService { //Define the contract operations. } class MyService : IMyService { //Implement the IMyService operations. }
-
创建 NetTcpBinding 类的一个实例,并将 PortSharingEnabled 属性设置为 true。
NetTcpBinding portsharingBinding = new NetTcpBinding(); portsharingBinding.PortSharingEnabled = true;
-
创建一个 ServiceHost,并在其中为 MyService 添加一个服务终结点,该终结点使用启用了端口共享的 NetTcpBinding 并在终结点地址 URI“net.tcp://localhost/MyService”上进行侦听。
ServiceHost host = new ServiceHost( typeof( MyService ) ); host.AddServiceEndpoint( typeof( IMyService ), portsharingBinding,"net.tcp://localhost/MyService" );
注意
此示例使用默认的 TCP 端口 808,因为终结点地址 URI 未指定其他端口号。由于在传输绑定上显式启用了端口共享,因此该服务可以与其他进程中的其他服务共享端口 808。如果不允许使用端口共享并且其他应用程序已在使用端口 808,则该服务在打开时会引发 AddressAlreadyInUseException。
使用配置在 NetTcpBinding 上启用 net.tcp:// 端口共享
-
下面的示例演示如何使用配置元素来启用端口共享以及添加服务终结点。
<system.serviceModel> <bindings> <netTcpBinding name="portSharingBinding" portSharingEnabled="true" /> </bindings> <services> <service name="MyService"> <endpoint address="net.tcp://localhost/MyService" binding="netTcpBinding" contract="IMyService" bindingConfiguration="portSharingBinding" /> </service> </services> </system.serviceModel>
如何:启用 Net.TCP 端口共享服务
Windows Communication Foundation (WCF) 使用一个名为 Net.TCP 端口共享服务的 Windows 服务,以方便在多个进程之间共享 TCP 端口。此服务作为 WCF 的一部分进行安装,但作为一项安全预防措施,默认情况下不会启用该服务,因此必须在首次使用它之前手动启用。本主题描述如何使用 Microsoft 管理控制台 (MMC) 管理单元配置 Net TCP 端口共享服务。
有关使用 net.tcp:// 端口共享的示例,请参见 Net.TCP 端口共享示例。
使用 MMC 启用 Net.TCP 端口共享服务
从“开始”菜单中,通过打开“命令提示符”窗口并键入 services.msc,或通过打开“运行”并在“打开”框中键入 services.msc,打开服务管理控制台。
在服务列表的“名称”列中,右击“Net.Tcp Port Sharing Service”,并从菜单中选择“属性”。
若要启用服务的手动启动功能,请在“属性”窗口中选择“常规”选项卡,并在“启动类型”框中选择“手动”,然后单击“应用”。
若要启动服务,请在“服务”状态区域中单击“启动”按钮。现在,服务状态区域应显示为“已启动”。
若要返回到服务列表,请单击“确定”并退出 MMC 控制台。
from : http://msdn.microsoft.com/zh-cn/library/ms731810(v=vs.110).aspx