好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WCF消息可靠性于有序传递

WCF消息可靠性于有序传递

WCF作为一项通讯技术,必须保证传输的可靠性与 消息的可靠性

传输可靠性 :指的是点对点可靠性,确保数据包按顺序到达。它不受网络等因素的影响

消息可靠性 :指提供了消息端对端的保证,确保消息的顺序无误。如果传输失败,它还能提供重试功能自动处理网络阻塞、消息缓存、流控制,根据具体情况适时调整发送消息数。它还能通过对连接的验证管理连接自身,并在不需要的时候清除连接

 

理论上,WCF服务的实现与服务契约的定义与它使用的绑定以及属性无关。实际上,服务处理消息以及契约定义都可能与消息的有序传递有关。在WCF中使用DeliveryRequirementsAttribute来对服务或者契约应用这种约束。

[AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class, AllowMultiple= true )]
public   sealed   class  DeliveryRequirementsAttribute : Attribute, IContractBehavior, IContractBehaviorAttribute
{
     private  Type contractType;
     private  QueuedDeliveryRequirementsMode queuedDeliveryRequirements;
     private   bool  requireOrderedDelivery;

 

如果 DeliveryRequirementsAttribute 应用于契约上,则实现此种契约的服务都应用可靠的有序传递的约束。如:

 

     [ServiceContract]

    [DeliveryRequirements(RequireOrderedDelivery =  true )]
     public   interface  ICalculator1
    {
        [OperationContract]
         int  Add( int  x,  int  y);
    }

 

如果应用于实现某契约类型的服务,则只有此服务应用可靠的有序传递的约束。

 

     [DeliveryRequirements(RequireOrderedDelivery =  true )]

    public class  CalculationService : ICalculator1
    {
         /**/
    }

 

如果实现契约的服务实现多个服务契约,也可以通过DeliveryRequirements指定只有支持某种契约终结点的服务才应

用这种可靠的有序传递的约束。如下:

[DeliveryRequirements(RequireOrderedDelivery =  true , TargetContract =  typeof  (ICalculator1))]
public   class  CalculationService : ICalculator1, ICalculator2
{    
         /**/
}

 

RequireOrderedDelivery默认为False,如果在接口或者服务类上使用Delivery却不设置,RequireOrderedDelivery

则也是不会开启有序传递的。

 

分类:  WCF基础

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于WCF消息可靠性于有序传递的详细内容...

  阅读:43次