Upload
gaetan
View
37
Download
5
Embed Size (px)
DESCRIPTION
Messaging with Web Services Enhancements 2.0. Benjamin Mitchell Independent Consultant Microsoft Regional Director – UK Blog http://benjaminm.net/ [email protected]. What We Will Cover:. Overview of Web Services Enhancements 2.0 What problems does Messaging solve? - PowerPoint PPT Presentation
Citation preview
Messaging Messaging with Web Services with Web Services Enhancements 2.0Enhancements 2.0
Benjamin MitchellBenjamin MitchellIndependent ConsultantIndependent ConsultantMicrosoft Regional Director – UKMicrosoft Regional Director – UKBlog Blog http://benjaminm.net/http://benjaminm.net/[email protected]@benjaminm.net
What We Will Cover:What We Will Cover:
Overview of Web Services Overview of Web Services Enhancements 2.0Enhancements 2.0
What problems does Messaging solve?What problems does Messaging solve?
Why does Messaging solve them?Why does Messaging solve them?
What types of Messaging models are What types of Messaging models are there?there?
How can I use these programming How can I use these programming models today?models today?
Web Services EnhancementsWeb Services Enhancements
WSE implements many WS-* WSE implements many WS-* specificationsspecifications
Simple, low-level object model for Simple, low-level object model for developers developers
Available for free downloadAvailable for free download
Logically part of the .NET Framework, Logically part of the .NET Framework, but kept separate while still evolving but kept separate while still evolving
Fully supported by Microsoft until at Fully supported by Microsoft until at least 2008least 2008
Version 1.0 Dec 2002, Version 2.0 May 2004Version 1.0 Dec 2002, Version 2.0 May 2004
Version 2.0 SP 2 pre-release available nowVersion 2.0 SP 2 pre-release available now
BenefitsBenefitsAllows MS to gather real world feedbackAllows MS to gather real world feedback
Allows early adopters to use the latest Allows early adopters to use the latest standardsstandards
WSE 2.0WSE 2.0
Designed to bring advanced Web Services Designed to bring advanced Web Services technologies based on standard protocols to technologies based on standard protocols to developersdevelopers
Integrates with Visual Studio .NET and .NET Integrates with Visual Studio .NET and .NET FrameworkFramework
What do you get with WSE?What do you get with WSE?WS-AddressingWS-Addressing
WS-SecurityWS-Security
WS-PolicyWS-Policy
WS-SecurityPolicyWS-SecurityPolicy
WS-TrustWS-Trust
WS-SecureConversationWS-SecureConversation
WS-ReferralWS-Referral
WS-AttachmentsWS-Attachments
InteroperabilityInteroperability
User Code
How does WSE work?How does WSE work?
SoapContext
Tra
ce
Secu
rity
Refe
rral
Policy
Custo
m
Security Token
Manager
Custom Filters
Problem StatementProblem Statement
Issues with connected systemsIssues with connected systemsBandwidth and LatencyBandwidth and LatencyDomain boundariesDomain boundariesCoordination and ManagementCoordination and Management
SolutionSolutionLess transparencyLess transparencyMore ExplicitnessMore Explicitness
ImplementationImplementationMessage-based programming modelsMessage-based programming models
TransparencyTransparency
Transparent programming models Transparent programming models are easyare easy
But, they obscure:But, they obscure:Location of code executionLocation of code execution
Complete context of executionComplete context of execution
You don’t know that you don’t knowYou don’t know that you don’t know
ExplicitnessExplicitness
Explicit programming models Explicit programming models leave more for the developer to leave more for the developer to dodo
They do not obscure as much:They do not obscure as much:Network activity is apparentNetwork activity is apparent
Context and timing is knownContext and timing is known
You know you don’t know so you You know you don’t know so you take precautionstake precautions
Enables communication to offline Enables communication to offline services services
About MessagingAbout Messaging
Several programming models within Several programming models within the "messaging" bucketthe "messaging" bucket
Eventing (often called Pub/Sub)Eventing (often called Pub/Sub)DialogsDialogsQueuesQueuesRequest-ResponseRequest-Response
Key benefitsKey benefitsMore natural fit for many business processesMore natural fit for many business processesAllows for more asynchronous processingAllows for more asynchronous processing
Many configurationsMany configurations"Smart" routers"Smart" routersOffline machinesOffline machinesEtc…Etc…
Web Services and MessagingWeb Services and Messaging
A way of exposing functionality A way of exposing functionality using a set of interoperable using a set of interoperable protocolsprotocols
Messages exchanged based on a Messages exchanged based on a shared schemashared schema
Independent of the programming Independent of the programming language used language used
No shared classesNo shared classesUnless you intentionally share Unless you intentionally share themthem
Messaging Implementations Messaging Implementations
MSMQMSMQClassicClassic
Offline QueuingOffline Queuing
ASMXASMXEasy to useEasy to use
WSE V2WSE V2Transport IndependenceTransport Independence
Host anywhereHost anywhere
MSMQ MessagingMSMQ Messaging
The classic messaging APIThe classic messaging API
MessageQueue classMessageQueue class
Two important methodsTwo important methodsSendSend
ReceiveReceive
Can provide reliable, in order, only Can provide reliable, in order, only once delivery as well as transaction once delivery as well as transaction supportsupport
Requires MSMQ at both ends of the Requires MSMQ at both ends of the pipelinepipeline
ASMX MessagingASMX Messaging
Easiest way to message with Easiest way to message with SOAPSOAP
Create an *.asmx fileCreate an *.asmx file
Write a classWrite a class
Decorate methods with Decorate methods with [WebMethod][WebMethod]
OneWay or RequestResponseOneWay or RequestResponse
WSE 2.0 MessagingWSE 2.0 Messaging
WSE 2.0 includes a SOAP-based WSE 2.0 includes a SOAP-based messaging APImessaging APITransport independenceTransport independence
Intra-AppDomainIntra-AppDomainFor testingFor testing
Raw TCPRaw TCPHTTPHTTP
Host IndependenceHost IndependenceWindows applicationWindows applicationASP.NETASP.NETWindows ServiceWindows Service
WSE 2.0 MessagingWSE 2.0 Messaging
SoapSender and SoapReceiverSoapSender and SoapReceiverOne way messagesOne way messages
Deal with the SoapEnvelope rather than Deal with the SoapEnvelope rather than method parametersmethod parameters
Must implement method dispatching Must implement method dispatching based on based on SoapEnvelope.Context.Adressing.ActionSoapEnvelope.Context.Adressing.Action
No automated reply messagesNo automated reply messagesThe Receiver must implement a new SenderThe Receiver must implement a new Sender
Sender must indicate reply addressSender must indicate reply address
Demonstration 1Demonstration 1
SoapSender and SoapReceiverSoapSender and SoapReceiver
WSE 2.0 Messaging WSE 2.0 Messaging (Continued)(Continued)
SoapClient and SoapServiceSoapClient and SoapServiceOne-way and two-wayOne-way and two-way
Uses SoapSender/SoapReceiverUses SoapSender/SoapReceiver
Offers XML Serialization support Offers XML Serialization support
Operation-based dispatchingOperation-based dispatchingThe Action is used to deliver the message to a The Action is used to deliver the message to a MethodMethod
Automatic replyingAutomatic replying
Demonstration 2Demonstration 2
SoapClient and SoapServerSoapClient and SoapServer
WSE 2.0 Messaging WSE 2.0 Messaging (Continued)(Continued)
ChannelsChannelsQueued modelQueued model
Raw, explicit programmingRaw, explicit programming
Programming Models Programming Models
ReceivingReceivingPollingPolling
PushPush
AdaptationAdaptationAdapterAdapter
MapperMapper
ErrorsErrorsDead letter Dead letter channelchannel
FaultsFaults
GatewayGatewayAggregating Aggregating GatewayGateway
RouterRouter
Programming Models: Programming Models: ReceivingReceiving
Push-modelPush-model
Implicit message receiveImplicit message receive
Message is processed when message Message is processed when message arrivesarrives
Allows for ActivationAllows for Activation
CLIENTCLIENT
Demonstration 3Demonstration 3
Push-model messaging with Push-model messaging with ASMXASMX
Programming Models: Programming Models: ReceivingReceiving
Polling to receive messagesPolling to receive messages
Explicit message receiveExplicit message receive
Lets recipient control when message Lets recipient control when message is processedis processed
CLIENTCLIENT
Demonstration 4Demonstration 4
Message Polling with WSE 2.0Message Polling with WSE 2.0
Programming Models: Programming Models: AdaptationAdaptation
Application not always messaging Application not always messaging awareaware
Too costly to re-code entire appToo costly to re-code entire app
Adapters translate app-specific data Adapters translate app-specific data and behavior into Messagesand behavior into Messages
APPLICATIAPPLICATIONON
ADAPTERADAPTER
Message on wire is serialized into Message on wire is serialized into common formatcommon format
Message data on system not always Message data on system not always serializableserializable
Message mapper deals with thisMessage mapper deals with this
MAPPERMAPPER
Programming Models: Programming Models: AdaptationAdaptationProgramming Models: Programming Models: AdaptationAdaptation
DATADATA MESSAGEMESSAGE
Programming Models - ErrorsProgramming Models - Errors
Two errors messaging is well-suited Two errors messaging is well-suited to deal withto deal with
Dead lettersDead letters
Invalid messagesInvalid messages
ExceptionsExceptionsExceptions can occur before dispatchExceptions can occur before dispatch
In user codeIn user code
Soap Faults map to ExceptionsSoap Faults map to ExceptionsFault codes are QNamesFault codes are QNames
Design: GatewayDesign: Gateway
Wraps application-specific logicWraps application-specific logic
Most Web services are gatewaysMost Web services are gateways
GATEWAYGATEWAY APP APP CODECODE
Design: GatewayDesign: Gateway
Aggregator is gateway that combines Aggregator is gateway that combines several messages into one internal several messages into one internal actionaction
GATEWAYGATEWAY APP APP CODECODE
Design: RouterDesign: Router
Routes a message from a source to a Routes a message from a source to a destinationdestination
ROUTERROUTERSOURCESOURCE DESTINATIDESTINATIONON
Design: RouterDesign: Router
Several type of routersSeveral type of routersSplittersSplitters
AggregatorsAggregators
FiltersFilters
ROUTERROUTER
ROUTERROUTER
ROUTERROUTERABABCC
ABZABZ
Design: RouterDesign: Router
And content-based routersAnd content-based routers
AAROUTERROUTER
BB
ABABCC =
AB
=A
BCC
=DE=DEFF
Design: Pub/SubDesign: Pub/Sub
Publication and SubscriptionPublication and Subscription
Message patternMessage patternOne message to subscribeOne message to subscribe
One to many messages publishing event One to many messages publishing event informationinformation
Observer pattern over a Observer pattern over a distributed systemdistributed system
Design: Pub/SubDesign: Pub/Sub
More on pub/subMore on pub/sub
EVENT EVENT SERVICESERVICE
SUBSCRIBSUBSCRIBERER
SUBSCRISUBSCRIBEBE
EVENTSEVENTS
Design: Pub/SubDesign: Pub/Sub
Two models for getting event Two models for getting event datadata
Push – notification includes dataPush – notification includes data
Pull – subscriber sends a request for the Pull – subscriber sends a request for the subscription data after receiving the subscription data after receiving the eventevent
Push is usually best for Web Push is usually best for Web servicesservices
Pull is good when subscribers Pull is good when subscribers may not be interested in the data may not be interested in the data and the data is large or processor and the data is large or processor intensiveintensive
Demonstration 5Demonstration 5
EventingEventing
Design: ReliabilityDesign: Reliability
Strongest and most resilient Strongest and most resilient systems implement reliable systems implement reliable messagingmessaging
Reliable messaging requires:Reliable messaging requires:Idempotent processingIdempotent processing
Durable storageDurable storage
NODENODE NODENODE
Design: Dialogs and QueuesDesign: Dialogs and Queues
Dialogs are virtual connections Dialogs are virtual connections between two nodesbetween two nodes
With the help of queues, dialogs can With the help of queues, dialogs can be reliable and persistent across be reliable and persistent across system resetssystem resets
NODENODE
Design: Dialogs and QueuesDesign: Dialogs and Queues
More on dialogs and queuesMore on dialogs and queues
NODENODE
Design: Long-Running Design: Long-Running OperationsOperations
Long-running operationsLong-running operationsA key gain of messagingA key gain of messaging
Allows closer modeling of real-life Allows closer modeling of real-life business scenarios business scenarios
ExamplesExamplesUser interaction is neededUser interaction is needed
Batch processing across multiple nodesBatch processing across multiple nodes
Design: Long-Running Design: Long-Running OperationsOperations
ExampleExample
NODENODE NODENODE
NODENODE
NODENODE
NODENODE
Design GuidelinesDesign Guidelines
Avoid RPC and CRUD designsAvoid RPC and CRUD designsTends to encourage RPC like behaviorTends to encourage RPC like behavior
Interface may imply stateful interactions Interface may imply stateful interactions like enumerationlike enumeration
Interface is likely to be overly chattyInterface is likely to be overly chatty
Don’t be too loose or extensibleDon’t be too loose or extensibleFocus on encapsulating business Focus on encapsulating business processesprocesses
Use contracts to reduce couplingUse contracts to reduce coupling
Session SummarySession Summary
Messaging allows for apps that more Messaging allows for apps that more closely match business processesclosely match business processes
Applications that use messaging are Applications that use messaging are more closely matched with business more closely matched with business processesprocesses
Existing technology can be used to Existing technology can be used to support messagingsupport messaging
WSE 2.0 provides extensible messaging WSE 2.0 provides extensible messaging with web services across multiple with web services across multiple protocolsprotocols
Call to ActionCall to Action
Start designing with messaging in mindStart designing with messaging in mind
Download WSE 2.0 Service Pack 1Download WSE 2.0 Service Pack 1
Download the Hands-On Labs on WSE Download the Hands-On Labs on WSE Messaging from Aaron SkonnardMessaging from Aaron Skonnard
http://http://msdn.microsoft.com/webservices/buildimsdn.microsoft.com/webservices/building/wse/default.aspxng/wse/default.aspx
For More InformationFor More Information
BlogsBlogshttp://benjaminm.nethttp://benjaminm.net
Rebecca Dias WSE Product ManagerRebecca Dias WSE Product Managerhttp://weblogs.asp.net/rdiashttp://weblogs.asp.net/rdias
Hervey Wilson Lead Developer WSE Hervey Wilson Lead Developer WSE http://dynamic-cast.comhttp://dynamic-cast.com
NewsgroupNewsgroupmicrosoft.public.dotnet.framework.webservices.enhancememicrosoft.public.dotnet.framework.webservices.enhancementsnts
BooksBooksEnterprise Integration PatternsEnterprise Integration Patterns – Gregor – Gregor Hohpe and Bobby WoolfHohpe and Bobby Woolf