WCF配置文件详解,多服务配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <!--Endpoint:每一个 WCF 服务都会关系到地址(Address)、绑定(Binding)和契约(Contract),而 WCF 则通过 Endpoint 将 ABC 三个方面联系在一起。每一个 Endpoint 都必须包括 ABC 三个方面,缺一不可,而 host 进程会提供 Endpoint 供客户端调用。每个 Endpoint 都对应一个唯一地址,但是多个 Endpoint 可以共享相同的绑定和契约,每个服务又可以提供多个 Endpoint 供客户端掉用。-->

  <system.serviceModel>

    <bindings>
      <!--这里面可以自己定义WCF服务协议-->
      <!--<mexHttpBinding></mexHttpBinding>
      <mexTcpBinding></mexTcpBinding>
      <webHttpBinding>
        <binding name="AllenBehavior"></binding>
      </webHttpBinding>-->
    </bindings>

    <behaviors>
      <!-- 定义Endpiont的行为-->
      <endpointBehaviors>
        <behavior name="AllenBehavior"></behavior>
      </endpointBehaviors>


      <!--region 这一段可以不用-->
      <serviceBehaviors>
        <behavior name="AllenBehavior">
          <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 
          //httpsGetEnabled  https连接
           指定service元数据发布和相关信息属性说明:
            httpGetEnabled - bool类型的值,表示是否允许通过HTTP的get方法获取sevice的WSDL元数据
            httpGetUrl - 如果httpGetEnabled为true,这个属性指示使用哪个URL地址发布服务的WSDL, 如果这个属性没有设置,则使用服务的HTTP类型的baseAddress后面加上?WSDL -->
          <serviceMetadata httpGetEnabled="true" httpGetUrl="" />
          <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->

        </behavior>
      </serviceBehaviors>
      <!--end-->
    </behaviors>
    <!--region 这一段可以不用-->
    <!-- 包含客户端跟服务端连接使用到的Endpoint的配置 -->
    <client>
      <!-- 每个客户端Endpoint设置
             属性说明:
             address  对应到服务端这个Endpoint的address
             binding - 指定这个Endpoint使用的binding,这个banding可以是系统预定义的9个binding之一,比如是basicHttpBinding
             contract - 指定这个Endpoint对应的Contract的全限定名(名称空间.类型名)
             name - Endpoint的配置名,客户端代理类的构造方法中的endpointConfigurationName对应到这个name
             bindingConfiguration - 指定客户端binding的具体设置,指向<bindings>元素下同类型binding的name -->
      <!--<endpoint address=""
          binding="webHttpBinding" bindingConfiguration="AllenBehavior"
          contract="WcfService.IUserService" name="endpoint配置名" />-->
    </client>
    <!--end-->

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

    <services>

      <!--name:wcf服务 命名空间+类名
      behaviorConfiguration:行为组态
      behaviorConfiguration:与子节点对应的相同
      -->

      <service name="WcfService.UserService"  behaviorConfiguration="AllenBehavior">
        <!--
        behaviorConfiguration :
        对应endpointBehaviors节点中behavior的属性name, 
        或者取协议里面节点binding的属性name。
        
        binding:属性说明WCF服务使用什么协议,这里是HTTP协议(mexHttpBinding:mexTcpBinding:webHttpBinding。。。)
        contract:属性是描述契约的接口名称,也必须是完整的.如果没有接口直接写实现契约的类型名
        address: 指定这个Endpoint对外的URI,这个URI可以是个绝对地址,也可以是个相对于baseAddress的相对地址。如果此属性为空,则这个Endpoint的地址就是baseAddress
        -->
        <endpoint address="" behaviorConfiguration="AllenBehavior" binding="webHttpBinding" contract="WcfService.IUserService" />



        <!-- region 可以不写-->
        <host>
          <baseAddresses>
            <!-- 在此可以定义每种传输协议的baseAddress,用于跟使用同样传输协议Endpoint定义的相对地
                    址组成完整的地址,但是每种传输协议只能定义一个baseAddress。HTTP的baseAddress同时是service
                    对外发布元数据的URL-->
            <add baseAddress="http://www.ccc.com"/>
          </baseAddresses>
        </host>
        <!--end-->

      </service>

    </services>

  </system.serviceModel>



  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>
多服务配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="ChinaQueue.Restaurant.WCFService.ServiceImplementations.PrinterSer" behaviorConfiguration="sb">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8081" />
          </baseAddresses>
        </host>
        <endpoint name="NetTcpBinding_IPrinterServer" address="PrinterSer" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServer" contract="ChinaQueue.Restaurant.WCFService.ServiceContracts.IPrinterSer" />
        <endpoint name="MexTcpBinding_IPrinterServer" address="Printer" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
      <service name="ChinaQueue.Restaurant.WCFService.ServiceImplementations.CounterSer" behaviorConfiguration="sb">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8081" />
          </baseAddresses>
        </host>
        <endpoint name="NetTcpBinding_ICounterServer" address="CounterSer" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServer" contract="ChinaQueue.Restaurant.WCFService.ServiceContracts.ICounterSer" />
        <endpoint name="MexTcpBinding_ICounterServer" address="Counter" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
      <service name="ChinaQueue.Restaurant.WCFService.ServiceImplementations.QuerySer" behaviorConfiguration="sb">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8081" />
          </baseAddresses>
        </host>
        <endpoint name="NetTcpBinding_IQueryServer" address="QuerySer" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServer" contract="ChinaQueue.Restaurant.WCFService.ServiceContracts.IQuerySer" />
        <endpoint name="MexTcpBinding_IQueryServer" address="Query" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="sb">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBinding_IServer">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
          <security mode="None">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="Windows" />
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint address="net.tcp://localhost:8081/PrinterSer" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServer" contract="ChinaQueue.Restaurant.WCFService.ServiceContracts.IPrinterSer" name="NetTcpBinding_IPrinterServer" />
      <endpoint address="net.tcp://localhost:8081/CounterSer" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServer" contract="ChinaQueue.Restaurant.WCFService.ServiceContracts.ICounterSer" name="NetTcpBinding_ICounterServer" />
      <endpoint address="net.tcp://localhost:8081/QuerySer" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServer" contract="ChinaQueue.Restaurant.WCFService.ServiceContracts.IQuerySer" name="NetTcpBinding_IQueryServer" />
    </client>
  </system.serviceModel>
</configuration>
多服务链接http://topic.csdn.net/u/20090306/10/d3a0b047-2634-4ffa-9cb0-e4c24b122f90.html

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值