2010-11-08 98 views
0

我正在调查有关Silverlight的WCF。带Windows服务的WCF基础知识

有人可以告诉我,如果我正确地认为我可以创建WCF服务,并使用我的Silverlight应用程序可以使用的Windows服务公开TCP端点吗?

我已经设法使用IIS公开这一点,但如果我们可以绕过使用IIS,因为我们的一些客户不喜欢它会很好。

UPDATE ...

OK我创建了一个WCF服务库(RemoteClientLib与IRemoteClients定义我的服务合同和RemoteClients实现此接口)和Windows服务来承载它。我已经添加了一个app.config到看起来像这样的两个项目:

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service name="RemoteClientLib.RemoteClients" behaviorConfiguration="remoteBehavior"> 
     <endpoint address="" binding="netTcpBinding" contract="RemoteClientLib.IRemoteClients" bindingConfiguration="remoteBinding"/> 
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:4520/RemoteClients"/> 
      </baseAddresses> 
     </host> 
     </service> 

    </services> 
    <bindings> 
     <netTcpBinding> 
     <binding name="remoteBinding"></binding> 
     </netTcpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="remoteBehavior"> 
      <serviceMetadata/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
    <system.web> 
    <compilation debug="true"/> 
    </system.web> 

    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

我创建了一个项目安装程序安装的服务,并启动它,但是当我尝试在我的Silverlight项目添加服务引用我得到 '无法建立连接,因为目标机器主动拒绝它' 有没有我失踪的东西?

+0

TCP端点与iis不兼容 – Andrey 2010-11-08 17:50:00

回答

1

This sample on codeproject.com我用于自托管WCF服务。将其构建到Windows服务中将非常简单。同样考虑将Topshelf作为Windows服务框架。

+0

确定感谢您的回答。 – 2010-11-09 14:28:42

+0

如何指定服务将使用哪个/哪些端口以便与我的客户端连接。使用托管端口的IIS在站点绑定中指定,并且不在代码中的任何位置执行。 – 2010-11-09 14:32:50

+0

该端口在您的WCF服务库的.Config – kenny 2010-11-09 18:04:16

0

你应该可以这样做。您可以在IIS中使用任何绑定,您应该可以使用自托管。

1

您可以创建一个Windows服务作为您自己的主机。以下是可用于托管WCF服务的各种方法的link