Restful WCF开发实践 互动版

配置服务与特性

WCF服务的所有通信都是通过终结点来进行的,IIS寄宿和自我寄宿都需正确配置终结点,才能正常启动服务。

终结点由地址(Address)、绑定(Binding)、契约(Contract)三者来定义:

  • Address:解决Where to locate the WCF Service问题
    用于指定访问服务资源的地址;如有多个终结点,每个终结点都需要指定一个相对地址。对于IIS寄宿模式,如果服务中仅定义一个终结点,可以为空,即表示服务地址由svc文件所在的虚拟目录地址所决定;
  • Binding:解决How to communicate with service问题
    WCF中,绑定包含传输方式、编码、安全等方面的指定,Restful WCF中一般简单的指定为webHttpBindingwebHttpBinding允许开发人员通过HTTP请求来公开Web服务,可以很便利的实现REST
  • Contract:解决What functionalities do the Service provide问题
    主要用于指定服务的契约,向外暴露服务所提供的功能

除了这三者之外,终结点通常还有个BehaviorConfiguration属性,用于定制Endpoint在运行时的一些必要的Behavior。比如上面的配置文件中,则指定了打开服务的帮助行为。

对于IIS寄宿和自我寄宿,对应的配置文件为web.configapp.config;配置文件差别不大,如下面的一个典型的配置文件例子:

<system.serviceModel>
  <services>
    <service name="WcfService.Implementation.EmployeeService">
      <endpoint address="http://me.hubwiz.com:80/RestWcfService"
      binding="webHttpBinding"
      behaviorConfiguration="BehaviorConfig"
      contract="WcfService.Contract.IEmployeeService"/>
   </service>
  </services>

  <behaviors>
    <endpointBehaviors>
      <behavior name="BehaviorConfig">
        <webHttp helpEnabled="true"/>
      </behavior>
    </endpointBehaviors>
  </behaviors>

</system.serviceModel>