QueuedDeliveryRequirements |实际意义

时间:2014-11-01 10:30:21

标签: wcf

有人可以让我知道QueuedDeliveryRequirements在DeliveryRequirements属性中的含义是什么吗?

MSDN说“指定服务的绑定是否必须支持排队的合同。”这让我更加困惑“什么是”排队合同“。请解释一下。

谢谢!

1 个答案:

答案 0 :(得分:0)

非常简单,当您定义服务接口时,例如:

[ServiceContract]
public interface ISomethingService
{
    [OperationContract]
    void Something();
}

接口将暴露在哪种传输绑定上没有固有的限制,这是一件好事,因为它使接口开发人员不必考虑如何在服务中实际部署和管理服务真实世界。

但是,在某些情况下,作为接口开发人员,您需要对特定类型的绑定进行烘焙,并且一个很好的例子就是排队绑定。在WCF中,排队绑定是那些利用Windows附带的msmq平台的传输绑定。

您可能有充分的理由在服务设计时指定这一点 - 例如,您需要在SLA中强制执行严格的有序,一次性,消息传递。

如果是这样,WCF允许您使用DeliveryRequirementsAttribute来指定:

[DeliveryRequirementsAttribute(
    QueuedDeliveryRequirements = QueuedDeliveryRequirementsMode.Required )] 
public class SomethingService : ISomethingService
{
    public void Something();
}

希望这会对你有所帮助。