WCF消息可靠性與有序傳遞
傳輸可靠性:指的是點對點可靠性,確保數(shù)據(jù)包按順序到達。它不受網(wǎng)絡(luò)等因素的影響
理論上,WCF服務(wù)的實現(xiàn)與服務(wù)契約的定義與它使用的綁定以及屬性無關(guān)。實際上,服務(wù)處理消息以及契約定義都可能與消息的有序傳遞有關(guān)。在WCF中使用DeliveryRequirementsAttribute來對服務(wù)或者契約應(yīng)用這種約束。
public sealed class DeliveryRequirementsAttribute : Attribute, IContractBehavior, IContractBehaviorAttribute
{
private Type contractType;
private QueuedDeliveryRequirementsMode queuedDeliveryRequirements;
private bool requireOrderedDelivery;
}
如果 DeliveryRequirementsAttribute 應(yīng)用于契約上,則實現(xiàn)此種契約的服務(wù)都應(yīng)用可靠的有序傳遞的約束。如:
[DeliveryRequirements(RequireOrderedDelivery = true)]
public interface ICalculator1
{
[OperationContract]
int Add(int x, int y);
}
publicclass CalculationService : ICalculator1
{
/**/
}
如果實現(xiàn)契約的服務(wù)實現(xiàn)多個服務(wù)契約,也可以通過DeliveryRequirements指定只有支持某種契約終結(jié)點的服務(wù)才應(yīng)
用這種可靠的有序傳遞的約束。如下:
public class CalculationService : ICalculator1, ICalculator2
{
/**/
}
RequireOrderedDelivery默認(rèn)為False,如果在接口或者服務(wù)類上使用Delivery卻不設(shè)置,RequireOrderedDelivery
則也是不會開啟有序傳遞的。
浙公網(wǎng)安備 33010602011771號