410 likes | 616 Views
The SOAP Story. Martin Parry Developer & Platform Group Microsoft Ltd martin.parry@microsoft.com http://martinparry.com. Agenda. Definitions SOAP through the ages SOAP and “standards” Approaches to building and using services SOAP Services with WCF Services and the Workflow Foundation.
E N D
The SOAP Story Martin Parry Developer & Platform Group Microsoft Ltd martin.parry@microsoft.com http://martinparry.com
Agenda • Definitions • SOAP through the ages • SOAP and “standards” • Approaches to building and using services • SOAP Services with WCF • Services and the Workflow Foundation
Definitions • SOAP • Initially: Simple Object Access Protocol • It’s about services that exchange messages • The messages are formed from XML • Each message has headers plus a body • WSDL • Describes services and their operations • Uses XML and schema to describe messages
SOAP on the Microsoft Platform • SOAP Toolkit • NT4, Windows 2000 • IIS4 or IIS5 • Based around COM • Used ISAPI filter • No longer in mainstream support • Extended support expires in March 2008
SOAP on the Microsoft Platform • SOAP Toolkit • NT4, Windows 2000 • IIS4 or IIS5 • Based around COM • Used ISAPI filter • No longer in mainstream support • Extended support expires in March 2008
SOAP on the Microsoft Platform • SOAP Moniker • Introduced in Windows XP Professional • Scriptable mechanism for invoking web services • Example vbscript... Dim proxy Set proxy = GetObject(“soap:wsdl=http://....”)
SOAP on the Microsoft Platform • .NET Remoting • Supports TCP and HTTP transports • Can use IIS, or not • Supports SOAP formatting, or binary • Significant difference: - • Distributed Object programming paradigm • As opposed to message passing
SOAP on the Microsoft Platform • ASP.NET • .asmx web services • “add web reference” • Still relies on IIS • Support in v2.0 for WS-I Basic Profile • No other “standards” support is built-in
SOAP on the Microsoft Platform • Web Services Enhancements • Now in v3.0 • Adds support for some WS-* protocols • Allows non-IIS services • Allows non-HTTP transport
SOAP on the Microsoft Platform • Windows Communication Foundation • Introduced in .NET FX 3.0 • Entirely new communications API • Allows for changes in transports and protocols • Very extensible • Can use IIS, or not • Can use HTTP, or not • Ships with named pipes, TCP, MSMQ, P2P
“Standards” • WS-Security • Message-level security • WS-SecureConversation • Optimisation for WS-Security • WS-Policy • Contractual info not contained in WSDL • WS-SecurityPolicy • Policy rules that are specific to security • WS-Trust • Defines STS
Approaches – Distributed Objects • A long history on the Microsoft platform • DCOM, .NET Remoting • Difficulty in managing object lifetimes • Wisdom of making network transparent? • Perhaps the developer needs to know? • Simple, OO paradigm – easy to code against
Approaches – Message Exchange • Probably still use a proxy class • How is message body formed? • Serialized object graph, or • Application code emits XML content directly • SOAP is all about message exchange really • Just a question of how this appears to the application developer • Different exchange patterns • Request/response, one-way, duplex, intermediaries
Approaches - SOA • There are multiple definitions of SOA • Not necessarily tied to web services • A service performs one standalone piece of the business process • Participates in message exchange • No notion of data + behaviour, as in OO • Should use contract + policy so that clients can be built correctly • Sometimes see “service brokers”
.NET Remoting ASMX Interop with other platforms Extensibility Location transparency Attribute- Based Programming Message- Oriented Programming WS-* Protocol Support Enterprise Services System.Messaging WSE
“Service” Message (SOAP) Message Headers: Addressing, Security, etc. Message Body: Payload Metadata Distributed Applications • Services pass messages described by a contract • Service may provide metadata, describing: - • The contract • The policy applied to communication “Client”
Security? Encoding? Transport? Mechanics of Communication “Service” “Client” What do I send? Contract Where do I send it? Address How should I send it? Binding
Endpoint Endpoint Endpoint Contract Contract Contract Binding Binding Binding Address Address Address Mechanics of Communication “Service” “Client”
<definitions> … <portType> <operation name=“GetTopics”> … </portType> </definitions> svcutil.exe WSDL Implements [ServiceContract] public interface INuggetAccess { [OperationContract] string[] GetTopics(); } Consumes public class NuggetAccessService : INuggetAccess { string[] GetTopics() { } } request metadata (WSDL) Contracts [ServiceContract] public interface INuggetAccess { [OperationContract] string[] GetTopics(); } .NET Interface “Client” “Service”
Richness of metadata Service • Service can advertise a lot of info to a client • WSDL • WS-Policy (security etc) • Can do so over • HTTP • WS- MetadataExchange • Makes building “clients” a lot simpler Endpoints Contracts
[ServiceContract] public interface INuggetAccess { [OperationContract] List<TopicInfo> GetTopics(); } [DataContract(Namespace=…)] public class TopicInfo { [DataMember] public int Id } Data Service [MessageContract] public class TypedMessage { [MessageBody] [MessageHeader] } Message Contract Details • Message exchange might be: - • One-way, Request/Response, Two-way (Duplex) • WCF also supports serialization models from .NET 2.0 • System.Xml.XmlSerialization, System.Runtime.Serialization
MyApp.exe ServiceHost host = new ServiceHost(); host.Open(); Hosting Services public class Service : INuggetAccess { string[] GetTopics() { } } IIS <%@ ServiceHost Service=“Service" %> References NuggetAccessService.svc • ServiceHost is the key class for hosting • Needs manual steps in your host application • Automatically done by IIS when provided with a .svc file • IIS handles additional transports in v7.0
XML objects formatting behaviours behaviours WCF – sketched architecture Client Service Metadata Your code Your code channel channel Transport Channel (HTTP, TCP, MSMQ, Pipes, Peer) channel channel channel channel Binding (ordered list of channel types & config) encoding decoding channel type 1 config channel type 2 config channel type N config
Standard Framework Bindings Pre-built set in the framework WS-I Basic Profile WS-* on HTTP TCP Named Pipes MSMQ Peer Configure/code your own as a "custom" binding Binding Transactions Configuration Reliability Configuration channels Security Configuration Transport Configuration
Instancing, Concurrency, Sessions Service classes can be instantiated: - Singleton, Per-Call, Per-Session, Shareable Service code can be either: - Single threaded, Re-entrant or Multi-threaded Service Message A Singleton Message B Message C Client
Instancing, Concurrency, Sessions Service classes can be instantiated: - Singleton, Per-Call, Per-Session, Shareable Service code can be either: - Single threaded, Re-entrant or Multi-threaded Service Message A Single Call Message B Single Call Message C Client Single Call
Instancing, Concurrency, Sessions Service classes can be instantiated: - Singleton, Per-Call, Per-Session, Shareable Service code can be either: - Single threaded, Re-entrant or Multi-threaded Service session Message A Per Session Message B Per Session Message C Client
Security in WCF – Out of the box • Transport Level • HTTPS • IIS authentication modes • Message Level • UserName, X.509 Certificate, Windows • IssuedToken – that is, federated security • ASP.NET membership and role providers
Security in WCF - Extensibility • Roll your own • Username validator • Token validator • Credential types • Security Token Service • SAML claims • Etc...
WCF in .NET FX 3.5 • Most of the new stuff isn’t SOAP • We’ll see some of that in the next session • Client proxies and partial trust environments • Durable services • Coming together with Workflow
Partial Trust • Now possible to call through WCF proxies in a partial trust environment • Various caveats • Transport is HTTP only, Security is HTTPS only • Encodings is all except MTOM • Bindings are BasicHttpBinding, WsHttpBinding, WebHttpBinding* • Other limitations • No Reliable Messaging, Transactions, Secure Conversation
Durable Services • Provider-based framework for easily adding long-running abilities to WCF services Host (e.g. IIS) initial call client implementation state token state serialize and store response + token
Durable Services • Provider-based framework for easily adding long-running abilities to WCF services Host (e.g. IIS) second call + token client implementation state token state load and deserialize
Workflow • WF is not strictly about services, or SOAP • In .NET FX 3.5, WF has some WCF integration • A workflow can consume services • We can implement a service as a workflow
Summary • The Microsoft platform has evolved along with SOAP and its accompanying standards • Culminating in WCF • The most flexible, extensible communications stack we’ve ever produced
Additional Information • MSDN Developer Center for Web Services • http://msdn2.microsoft.com/en-gb/webservices/default.aspx • “Standards” • http://www.w3.org • http://www.ws-i.org • http://www.oasis-open.org • SOA • http://www.opengroup.org/projects/soa • http://wiki.oasis-open.org/soa-rm • WCF • http://netfx3.com/content/WCFHome.aspx • WF • http://netfx3.com/content/WFHome.aspx
MSDN in the UK • Visit http://msdn.co.uk • Newsletter • Events • Screencasts • Blogs