初学WCF需要注意的地方

时间:2023-03-09 15:30:02
初学WCF需要注意的地方

1.WCF的元数据发布有两种方式:

a.HTTP-GET方式发布数据:让客户端使用HTTP-GET方式来获取数据是比较常见的方式。所谓HTTP—GET方式,是指当客户端发送一个HTTP-GET请求时,宿主将把元数据信息包含在HTTP的返回包中返回给客户端。在 配置文件中设定,特别要注意的地方,如果使用的是net.tcp方式必须把httpGetEnabled的值设定为false,否则出出现异常。

<behaviors>
   <serviceBehaviors>
    <behavior name="notifyBehavior">
     <serviceMetadata httpGetEnabled="true"/>
     <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>

b.MEX终结点方式发布数据:除了通过HTTP—GET方式外,还可以通过MEX终结点方式发布元数据。他包含终结点的三要素:ABC(地址、绑定、契约)。WCF提供了MEX终结点的契约定义:IMetdataExchange接口以及该服务契约的实现。IMetdataExchange接口,在配置文件中设定如下:

<endpoint address="net.tcp://localhost:8123/NotifySampleFileInfoDataIsChanged/mex" binding="mexTcpBinding"
    contract="IMetadataExchange" />

其中使用Mex节点提供了基于不同通信协议的专门绑定,如:mexTcpBinding、mexNamedPipeBinding、mexHttpBinding等。

2.在服务契约中定义“单程”操作

默认情况下,服务契约中的操作是“请求-响应”,只有使用MSMQ协议和P2P协议进行通信的绑定不支持“请求-响应”操作,其他都可以。设定OperationContract的IsOneWay属性来定义单程操作,[OperationContract(IsOneWay=true)]来定义(注意:只能在没有返回值的方法上定义单程操作)。

未完待续