<分区>
我最近遇到了一个问题“WCF 有多少种契约类型”。我知道树契约类型:ServiceContract
、DataContract
、OperationContract
,但有人告诉我有四种。您能否解释一下 WCF 还有哪些其他类型的契约(Contract)?
<分区>
我最近遇到了一个问题“WCF 有多少种契约类型”。我知道树契约类型:ServiceContract
、DataContract
、OperationContract
,但有人告诉我有四种。您能否解释一下 WCF 还有哪些其他类型的契约(Contract)?
最佳答案
WCF 中有四种契约:
Data Contract - 它描述了数据的格式并定义了数据应如何序列化/反序列化。要为您的服务定义一个DataContract
,您可以使用DataContract
、DataMember
。参见 DataContract
on MSDN
服务契约(Contract) - 它描述了服务公开的操作。它还可以描述消息交换模式。可以使用 [ServiceContract] 和 [OperationContract] 属性定义服务契约。参见 ServiceContract
on MSDN
Message Contract - 它让我们可以控制 SOAP 消息。如果您只使用数据协定,所有数据都将在 SOAP 消息体中,但如果您需要控制/访问 SOAP 消息 header ,您可以使用 MessageContract
。可以使用 MessageContract
属性将消息协定应用于类型。使用 MessageHeader
和 MessageBodyMember
属性可以将自定义 header 和正文包含到消息中。参见 MessageContract
on MSDN
Fault Contract - 这是一个特殊的契约(Contract),用于让客户知道服务端出现问题。如果抛出异常,它就无法按原样到达客户端。 WCF 处理它并使用 SOAP Fault Contract 将错误消息传送给客户端。您还可以为操作定义一个故障契约(Contract)。您需要使用 [FaultContract(typeof(YouCustomFault))]
和 YouCustomFault
以及 DataContract
、DataMember
来装饰您的操作属性。参见 FaultContract
on MSDN
并且没有OperationContract
这样的契约,它只是一个定义服务契约操作的属性。
关于c# - WCF 有多少种契约类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23117136/