知行,知任
给自己一个目标 - 征服自己

     说起Contracts,我们大家都能想到它的中文意思,没错,“合同,契约”。那我们搬出它来做什么呢?WCF是一种技术架构,支持跨平台,跨语言,跨域等多种复杂环境。这种情况就不得不要求我们做出一种规范,来实现上述目的。而这种规范就是所谓的“契约”。

     我们先说说契约的种类:ServiceContract, DataConstract, FaultContract, MessageContract.

     下面分别介绍一下各个契约的含义以及如何使用:

     ServiceContract即所谓的“服务契约”,它是用来定义一系列服务的操作的契约。通常被用在Interface上。该接口中定义了一系列可供客户端调用的方法,在这些方法上我们还需要声明为“OperationContract”. 这就代表,该方法是可以被客户端调用到的。OperationContract可以声明在interface中的方法上,也可以声明在Class的方法上,但该class必须继承于声明为ServiceContract的interface.如:

    

Code

 

     DataContract即“数据契约”,是用来定义客户端与WCF服务之间进行数据交换的数据格式。datacontract中定义了需要交换的数据都有哪些,但也不是说datacontract中定义的property就全部是需要交换的数据,只有被声明为DataMemeber的property才会被认为是需要交换的数据。如:

     

Code

 

     FaultContract即“错误契约”,是用来定义当WCF服务中执行的操作出现异常时抛出的错误信息处理方式,FaultContract通常定义在服务契约中声明的方法上面,一般和OperationContact一起使用,来说明当此方法中抛出异常时所传会客户端的信息格式。如:

     

Code

 

     Message Contract即“消息契约”,可以用来定义客户端与WCF服务之间进行消息传递时所使用的信息格式,包括消息头和消息体,还可以指示是否对消息进行加密。如:     

Code

 

通过以上的介绍,其实ServiceContract与OperationContract标记就像是WebService中的WebService和WebMethod标记,

 

Code

 

     

posted on 2008-12-10 16:53  Peter Yang  阅读(485)  评论(1编辑  收藏  举报

Email: yanghuaizhi1982@126.com
MSN: huaizhiyang1982@hotmail.com