1 / 25

Windows Communication Foundation (“Indigo”): Writing Reliable and Transacted Distributed Applications

Windows Communication Foundation (“Indigo”): Writing Reliable and Transacted Distributed Applications. Shy “BAD-P” Cohen COM307 Program Manager Connected Systems Division Microsoft Corporation. Moving To Service Orientation. Threads versus Messages BAD P! BAD, BAD P!

kenna
Download Presentation

Windows Communication Foundation (“Indigo”): Writing Reliable and Transacted Distributed Applications

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows Communication Foundation (“Indigo”): Writing Reliable and Transacted Distributed Applications Shy “BAD-P” Cohen COM307 Program Manager Connected Systems Division Microsoft Corporation

  2. Moving To Service Orientation • Threads versus Messages • BAD P! BAD, BAD P! • Why don’t you come back? Please hurry… ♫ • Keeping it Consistent • All together now!

  3. Communication Issues Network unavailable Connection drops Network loses messages Messages may arrive out of order Messages may take different paths Retried messages may arrive after the ones that followed them Processing Issues Messages lost when processing fails Interrelated Messages processed individually Failure may leave the distributed system in an inconsistent state Messages can’t be retried without side effects Retried messages arriving twice, reordering, etc. Challenges Of Implementing Reliable Distributed Systems

  4. Reliable Sessions Transactions Queues Making It Reliable

  5. Sessions Service Instance Proxy Channel Session Session Channel

  6. Session State And Lifetime

  7. Reliable Sessions Assurances • Messages are delivered exactly once, in the same order as they were sent • Alternatively, you can choose to have them delivered in order in which they were received • Resilient to • Transport disconnections • SOAP or transport intermediary failures • Features • Connection verification and maintenance • Congestion and flow control

  8. Reliable SessionsEnabling • Provided on Standard Bindings netTcpBinding (off by default) wsHttpBinding (off by default) wsDualHttpBinding (always on) • Can be added to any custom binding <bindings> <customBinding> <binding configurationName=”ReliabilityHTTP”> <reliableSession/> <httpTransport/> </binding> </customBinding> </bindings>

  9. Ordered And Unordered Reliable Sessions

  10. Keeping It Consistent • Atomic Transactions versus Compensation • Trading off coupling and complexity • Atomic Transactions: simpler, tighter coupling • Compensation: more complex, looser coupling • Both have their place • Choose the right model for the situation

  11. Transacted Operations

  12. TransactionsSummary • Service Developer (Code) • Declares willingness to participate in an incoming (client initiated) transaction on contract operations • No transaction sharing on one-way operations! * • Specified implementation behavioral aspects at the service and method level • Client Developer (Code) • Creates transactions • Includes services & local TX-ed resources in their scope • Service Administrator (Config) • On/Off switch controls TX flow support for an endpoint • It’s about Trust

  13. Queues • Increase availability • Mask network or service unavailability • Support scale out • Multiple readers from a single queue • Provide load leveling • Handle average, not peak load • Are a building block for compensating business transactions • Reliable, durable messaging to capture distributed state changes • Need to compensate for errors

  14. MSMQ MSMQ Queues • Make one-way operations possible even when the service isn’t available • Supported via MSMQ • Programmer uses regular WCF channels • IT Pro manages the familiar MSMQ service Service Client

  15. Basic Queued Messaging

  16. QueuesComposing with TXs • Operation requires 2 transactions • TX between client and queue to send • Another TX between service and queue to receive • If a transaction aborts • Message sent under the TX are discarded • Messages received under the TX are retried

  17. QueuesMEPs • Datagrams • Standalone messages • Can be sent and received with or without using a transaction • “Exactly Once” or “Best Effort” delivery • “Sessiongram” • A grouping of related messages • Always processed together under a single TX • “Exactly Once, In Order” delivery

  18. Queues, Transactions, And Sessions

  19. QueuesThe dead letter queue • Stores messages that could not be delivered • Can be processed like any other queue • New in Windows Vista: User specified DLQ • If not specified, the default is the system-wide DLQ • With a shared DLQ, processing service needs to implement all the contracts for all the messages going into it • Alternatively, use System.Messaging to process messages from the Dead Letter Queue

  20. QueuesPoison messages • Messages for whom processing fails, repeatedly, are considered “poison” • Failure = the processing transaction aborted • Message properties indicate how many times a message was delivered MsmqMessageProperty msmqMessageProperty; msmqMessageProperty = OperationContext.Current .IncomingMessageProperties[MsmqMessageProperty.Name] as MsmqMessageProperty; if (prop.TotalAbortCount > myRetryThreshold) { /* Do something */ }

  21. QueuesPoison messages • New in Windows Vista: Automatic protection against repeated failures • By limiting NUMBER of retries • By controlling HOWretries are done <netProfileMsmqBinding> <binding configurationName=“QB" maxImmediateRetries="2" retryCycleDelay="0:0:10" maxRetryCycles="3" rejectAfterLastRetry="false" /> </netProfileMsmqBinding> 3 retry cycles 1st attempt To Poison Message Queue 2 retries 10 seconds between attempts

  22. Q’sFailure compensation • Set up compensation services on the sending and receiving sides <binding configurationName="MyQueueBinding“ ... timeToLive="0:2:0" deadLetterQueue= "net.msmq://MyClient/private/myCustomDLQ" /> <endpoint address ="net.msmq://MyServer/private/MyQueue;poison/” bindingSectionName="netProfileMsmqBinding" bindingConfiguration ="MyQueueBinding" contractType="Queue.IPurchaseOrder, Queues" />

  23. When Faced With Challenges • WCF provides sophisticated session mgmt • Session lifetime and associated state • WCF assures • … that messages arrive exactly once • … in the order in which they were sent • WCF provides transacted state management • Computation and communication • WCF provides high availability • Durability, atomicity, and error handling

  24. Community Resources • At the PDC • More on Windows Communication Foundation • Attend the other WCF presentations • Talk to me and the other WCF folks at the Lounge, Ask The Experts, or at any other time • More on System.Transactions • Go talk to Max (COM lounge) or Jim (FUN lounge) • Attend FUN320 tomorrow • Do the HOLs: WCF HOLs, FUN HOL13 (TXF & TXR) • After the PDC • MSDN dev center: http://msdn.microsoft.com/webservices/ • MSDN Forums • Channel 9 tag: http://channel9.msdn.com/tags/Indigo • Contact me: Shy.Cohen@Microsoft.com

  25. © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

More Related