WCF有多少种合约类型?

时间:2014-04-16 18:17:26

标签: c# wcf

我最近遇到了一个问题“WCF有多少合约类型”。我知道树契约类型:ServiceContractDataContractOperationContract,但我被告知有四种。你能解释一下WCF有哪些其他类型的合同吗?

1 个答案:

答案 0 :(得分:8)

WCF中有四种类型的合同:

  1. 数据合同 - 它描述了数据的格式,并定义了如何序列化/反序列化数据。要为您的服务定义DataContract,您可以使用DataContractDataMember。请参阅DataContract on MSDN

  2. 服务合同 - 它描述了服务公开的操作。它还可以描述消息交换模式。可以使用[ServiceContract]和[OperationContract]属性定义服务合同。请参阅ServiceContract on MSDN

  3. 消息合同 - 它使我们可以控制SOAP消息。如果仅使用数据协定,则所有数据都将位于SOAP消息体中,但如果需要对SOAP消息头的控制/访问,则可以使用MessageContract。可以使用MessageContract属性将消息协定应用于类型。可以使用MessageHeaderMessageBodyMember atttributes将自定义标题和正文添加到消息中。请参阅MessageContract on MSDN

  4. 错误合同 - 这是一个让客户知道服务方面出错的特殊合同。如果抛出异常,它就无法以它的方式到达客户端。 WCF处理它并使用SOAP Fault Contract将错误消息传递给客户端。您还可以为操作定义一个故障合同。您需要使用[FaultContract(typeof(YouCustomFault))]YouCustomFault以及DataContractDataMember属性来装饰您的操作。请参阅FaultContract on MSDN

  5. 并且没有OperationContract这样的合同,它只是定义服务合同操作的属性。