WCF - 不使用IIS的远程服务 - 基地址?

时间:2010-03-25 09:33:18

标签: wcf asmx endpoints addressing

我正试图解决WCF服务的问题。

我们有一个客户端 - 服务器设置,其中服务器偶尔(可能每天一次)需要将数据推送到每个客户端。我希望在NT服务中托管的每个客户端上都有一个轻量级的WCF侦听器服务来接收该数据。我们已经有了这样的NT服务设置,为其他任务托管一些本地WCF服务,因此这个开销很小。

由于服务器上存在遗留代码,我认为该服务需要作为ASMX公开,并使用basicHttpBinding来允许它连接。

每个客户端都由用户在服务器上注册(他们需要单独配置它们),因此发现不是问题。

我的问题是,寻址是如何工作的?我想用户以

的形式在服务器上输入客户端的地址
http://0.0.0.0/MyService

甚至

http://hostname/MyService

如果是这样,我如何在其App.config中配置客户端服务?我使用localhost吗?

如果没有,那么将服务暴露给服务器的推荐方式是什么?

注意:

  • 我不想在IIS中托管,因为这会增加客户端所需硬件的额外要求。
  • 客户几乎肯定会位于局域网上,而不是通过公共互联网

1 个答案:

答案 0 :(得分:1)

您可以像这样配置服务的基地址:

<system.serviceModel>
  <services>
    <service name="Ns.FooService">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:9999" />
        </baseAddresses>
      </host>
      <endpoint
          address="/foo"
          binding="basicHttpBinding"
          contract="Ns.IFooContract" />
     </service>
  </services>
</system.serviceModel>

然后可以通过http://servename:9999/foo访问您的服务。您可以查看this article以获取更多信息。