2009-06-29 55 views
5

如何通过TCP端口主机WCF服务,以及如何听,并通过这些TCP端口中的服务?如何通过TCP端口托管WCF?

也就是说,除了net.tcp绑定,是有一些方法来承载,并使用TCP端口消耗?

+0

所以基本上,在Windows XP主机n可通过3种方式 1.自我托管 2.IIS 3.as Windows服务 所以打开一个TCP端口,消费它,谈到下自我进行消费托管或是另一种方式承载n消费wcf服务或有任何其他方式,即在TCP下? – kurozakura 2009-06-29 09:22:47

回答

8

在WCF中,您可以通过创建ServiceHost类的实例,使用正确的端点和希望公开的服务实现来配置它,并在其上调用Open。这称为自托管,因为您在自己的应用程序中托管服务(及其端口侦听器)。

或者,您可以将您的服务托管在IIS中,但您应该知道,虽然您可以在IIS 6中托管WCF,但它只允许您托管HTTP和HTTPS端点。如果您想在IIS中托管TCP端点(这是一个好主意),您将需要IIS 7.

阅读全文here

0

你可以使用任何端口(只要你得到了它的权限)来承载您的WCF服务。当使用IIS来托管wcf服务时,它有些不同,但在自托管环境中,只需将端口号添加到您的基地址即可。 (使用Vista或Windows Server 2008时,你有权授予访问端口时,不具有管理员权限(例如使用Netsh)运行)

使用例如http服务(或net.tcp)的端口1337只需添加“:1337 /”到您的基地址,剩下的就完成了。

+0

所以基本上,在Windows XP主机n可以通过三种方式来完成 1.自我托管 2.IIS 3.as Windows服务 所以打开一个TCP端口,消费它费时,谈到下自托管或它是承载n个耗费wcf服务的另一种方式还是有其他方式? – kurozakura 2009-06-29 09:20:27

+0

有关使用netsh打开端口的更多信息,请访问:http://msdn.microsoft.com/en-us/library/ms733768.aspx – 2009-11-12 21:58:23

0

可能是这样的帮助

<services> 
    <service behaviorConfiguration="configname" 
    name="servicename"> 
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding" 
     name="NetTcpBindingEndpoint" bindingName="MyServiceBinding" 
     contract="Interface"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 

    <endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding" 
     name="MexTcpBindingEndpoint" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:prot/TestService" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
0

所有HTTP绑定使用TCP的传输层工作。因此,您可以使用HTTP绑定和IIS.6来托管在特定TCP端口上运行的WCF服务。

下面是关于如何实现这一目标的walktrough:

  • 配置为从配置文件(或者代码)所需的端口上运行的服务:

    <service name="WCFService" behaviorConfiguration="DefaultBehaviour"> 
    <host> 
        <baseAddresses> 
        <add baseAddress="http://localhost:8000/WCFService" /> 
        </baseAddresses> 
    </host> 
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="WCFService_mexEndpoint" contract="IMetadataExchange" /> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" name="WCFService_Endpoint" contract="WCFService.IService1" /> 
    

  • 在IIS
  • 创建了一个网站(或虚拟目录)和Co如果它是绑定的,可以在您的baseAddress服务配置中选择的端口上运行(以上示例为8000)。

以上步骤的结果是一个WCF服务,它使用HTTP作为传输协议在传输层的TCP端口8000上运行。

编辑:我相信你在这里做一个小的混乱。如果您试图实现的是二进制传输包,那么唯一的解决方案就是net.tcp绑定,这与IIS不兼容。如果你只是想能够选择连接的TCP端口,那么任何HTTP绑定都可以做到这一点,如我在上面的示例中所述,并且可以在IIS.6中使用。

+0

所以基本上,在Windows XP主机n消费可以用3种方式完成 1。自主托管 2.IIS 3.作为Windows服务 因此打开一个TCP端口并使用它,属于自托管或它是承载n消费wcf服务的另一种方式,或者是否有任何其他方式,即在TCP ? – kurozakura 2009-06-29 09:22:00

0

我知道它有点晚了..但是,我想你可以使用Visual Studio附带的“WCF服务主机”应用程序。