Title: The SOAP Story
1The SOAP Story
- Martin Parry
- Developer Platform Group
- Microsoft Ltd
- martin.parry_at_microsoft.com
- http//martinparry.com
2Agenda
- Definitions
- SOAP through the ages
- SOAP and standards
- Approaches to building and using services
- SOAP Services with WCF
- Services and the Workflow Foundation
3Definitions
- SOAP
- Initially Simple Object Access Protocol
- Its 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
4SOAP 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
5SOAP 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
6SOAP on the Microsoft Platform
- SOAP Moniker
- Introduced in Windows XP Professional
- Scriptable mechanism for invoking web services
- Example vbscript...
- Dim proxy
- Set proxy GetObject(soapwsdlhttp//....)
7SOAP 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
8SOAP 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
9SOAP 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
10SOAP 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
11Standards
- 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
12Approaches 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
13Approaches 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
14Approaches - 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
15.NET Remoting
ASMX
Interop with other platforms
Extensibility Location transparency
Attribute- Based Programming
Message- Oriented Programming
WS- Protocol Support
Enterprise Services
System.Messaging
WSE
16Distributed Applications
Client
- Services pass messages described by a contract
- Service may provide metadata, describing -
- The contract
- The policy applied to communication
17Mechanics of Communication
Service
Client
What do I send?
Contract
Where do I send it?
Address
How should I send it?
Binding
18Mechanics of Communication
Service
Client
19Contracts
ServiceContract public interface INuggetAccess
OperationContract string GetTopics()
.NET Interface
Service
Client
20Richness 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
21Contract 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.Serial
ization
22Hosting Services
public class Service INuggetAccess
string GetTopics()
IIS
lt_at_ ServiceHost ServiceService" gt
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
23Windows Communication Foundation
24WCF sketched architecture
Client
Service
Metadata
Your code
Your code
25Standard 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
26Instancing, 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
27Instancing, 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
28Instancing, 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
29Security 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
30Security in WCF - Extensibility
- Roll your own
- Username validator
- Token validator
- Credential types
- Security Token Service
- SAML claims
- Etc...
31Federated Security with WCF
32WCF in .NET FX 3.5
- Most of the new stuff isnt SOAP
- Well see some of that in the next session
- Client proxies and partial trust environments
- Durable services
- Coming together with Workflow
33Partial 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
34Durable Services
- Provider-based framework for easily adding
long-running abilities to WCF services
Host (e.g. IIS)
client
implementation
state
token
state
35Durable Services
- Provider-based framework for easily adding
long-running abilities to WCF services
Host (e.g. IIS)
client
implementation
state
token
state
36Workflow
- 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
37Services with WF
38Summary
- The Microsoft platform has evolved along with
SOAP and its accompanying standards - Culminating in WCF
- The most flexible, extensible communications
stack weve ever produced
39Additional Information
- MSDN Developer Center for Web Services
- http//msdn2.microsoft.com/en-gb/webservices/defau
lt.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
40MSDN in the UK
- Visit http//msdn.co.uk
- Newsletter
- Events
- Screencasts
- Blogs
41(No Transcript)