使用多个 WCF 应用程序构造解决方案

本文关键字:解决方案 应用程序 WCF | 更新日期: 2023-09-27 18:32:03

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

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

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

使用多个 WCF 应用程序构造解决方案

可以在

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>