什么是契约或者契约的用处是么?
任何的一个分布式应用程序,关键之处就在于相互之间消息的传递。那么要想传递消息就不能是我说英语你说中文吧,所以需要实现定义好数据交换规则。这样契约的作用就是就是表示这个规则的体现,或者说契约就是WCF的消息标准,是任何一个WCF程序不可或缺的一部分
契约的种类
1.用于定义服务操作的服务契约:Service Contract
这个级别的契约又包括两种:ServiceContract和OperationContract
ServiceContract用于类或者结构上,用于指示WCF此类或者结构能够被远程调用,强调内容而OperationContract用于类中的方法(Method)上,用于指示WCF该方法可以被远程调用
2.用于定义数据结构的数据契约:Data Contract
数据契约也分为两种:DataContract和DataMember.DataContract用于类或者结构上,指示WCF此类或者结构能够被序列化并传输,而DataMember只能用在类或者结构的属性(Prooerty)或者字段上(Field),指示该WCF该属性或者字段能够被序列化传输;
3.用于自定错误异常的异常契约:Fault Contract
FaultContract用于自定义错误异常的处理方式,默认情况下,当服务端抛出异常的时候,客户端能够接受到异常信息的描述,但是这些描述往往是格式统一。有时候比较难以从中获取有用的信息,此时我们可以自定义异常消息格式。将我们关心的消息放到错误消息中传递给客户端,此时需要在方法上添加自定义一个错误消息的类,然后在要处理异常的函数上加上FaultContract,并将异常信息指示返回自定义格式
4.用于控制消息格式的消息契约:Message Contract
这个消息契约能够自定义消息格式,包括消息头,消息体,还能指示是否对消息内容进行加密和签名