0

我们目前有一个只有一个 WCF 应用程序的解决方案,在接下来的两年中,该解决方案增长了很多。它有大约 70 种不同的服务。我们使用 Windows Identity Foundation 来保障大多数人的安全,其他人使用 SSL,而有些人没有

我正在寻找重组应用程序,我正在考虑拥有多个 WCF 应用程序(一个用于业务服务,另一个用于后端服务等),我认为它对测试有很大帮助。

我的问题是:有没有一种方法可以构建具有多个 WCF 应用程序的解决方案,而无需创建和部署多个包(对于部署不是很有用)如果我重新构建应用程序,我将有 4 或 5 个不同的服务项目并且还需要一个每个 app.config 文件(在生产环境中不易维护或升级)

4

1 回答 1

0

您可以在 WCF 主机中拥有任意数量的服务程序集,只要确保它们具有唯一的名称即可。每个服务 dll 都有自己的项目,并且主机停留在解决方案中的一个项目中。然后像这样创建一个 app.config:

<services>
  <service behaviorConfiguration="serviceBehaviour" name="DLSService.DLSService">
    <endpoint address="DLSService" binding="basicHttpBinding" bindingConfiguration=""
      name="basicHttpDLS" contract="DLSService.IDLSService" />
    <endpoint binding="mexHttpBinding" bindingConfiguration="" name="mexDLS"
      contract="IMetadataExchange" />
    <endpoint address="DLSService" binding="netTcpBinding" bindingConfiguration=""
      name="netTcpDLS" contract="DLSService.IDLSService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServicesHost/DLSService" />
      </baseAddresses>
    </host>
  </service>
  <service behaviorConfiguration="serviceBehaviour" name="RopsPreorderService.RopsPreorderService">
    <endpoint address="RopsPreorderService" binding="basicHttpBinding" bindingConfiguration=""
      name="basicHttpPreorderService" contract="PreorderService.IPreorderService" />
    <endpoint binding="mexHttpBinding" bindingConfiguration="" name="mexRopsPreorderService"
      contract="IMetadataExchange" />
    <endpoint address="PreorderService" binding="netTcpBinding" bindingConfiguration=""
      name="netTcpPreorderService" contract="RopsPreorderService.IPreorderService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServicesHost/PreorderService" />
        <add baseAddress="net.tcp://localhost:9000/PreorderService" />
      </baseAddresses>
    </host>
  </service>      
</services>
于 2013-09-20T10:33:23.657 回答