我最近遇到了一个问题“WCF有多少合约类型”。我知道树契约类型:ServiceContract
,DataContract
,OperationContract
,但我被告知有四种。你能解释一下WCF有哪些其他类型的合同吗?
答案 0 :(得分:8)
WCF中有四种类型的合同:
数据合同 - 它描述了数据的格式,并定义了如何序列化/反序列化数据。要为您的服务定义DataContract
,您可以使用DataContract
,DataMember
。请参阅DataContract
on MSDN
服务合同 - 它描述了服务公开的操作。它还可以描述消息交换模式。可以使用[ServiceContract]和[OperationContract]属性定义服务合同。请参阅ServiceContract
on MSDN
消息合同 - 它使我们可以控制SOAP消息。如果仅使用数据协定,则所有数据都将位于SOAP消息体中,但如果需要对SOAP消息头的控制/访问,则可以使用MessageContract
。可以使用MessageContract
属性将消息协定应用于类型。可以使用MessageHeader
和MessageBodyMember
atttributes将自定义标题和正文添加到消息中。请参阅MessageContract
on MSDN
错误合同 - 这是一个让客户知道服务方面出错的特殊合同。如果抛出异常,它就无法以它的方式到达客户端。 WCF处理它并使用SOAP Fault Contract将错误消息传递给客户端。您还可以为操作定义一个故障合同。您需要使用[FaultContract(typeof(YouCustomFault))]
和YouCustomFault
以及DataContract
,DataMember
属性来装饰您的操作。请参阅FaultContract
on MSDN
并且没有OperationContract
这样的合同,它只是定义服务合同操作的属性。