The SOAP Story - Microsoft Download Center

fortnecessityusefulSoftware and s/w Development

Dec 14, 2013 (3 years and 8 months ago)

234 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

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”

Interop

with other

platforms

ASMX

Attribute
-


Based

Programming

Enterprise
Services

WS
-
*

Protocol

Support

WSE

Message
-

Oriented

Programming

System.Messaging

Extensibility

Location transparency

.NET
Remoting

Distributed Applications

Services pass messages described by a contract

Service may provide metadata, describing:
-

The contract

The policy applied to communication

“Client”

Message

Message

“Service”

Metadata

Message (SOAP)

Headers: Addressing, Security, etc.

Body: Payload

What do I send?

Where do I send it?

How should I send it?

Contract

Address

Binding

Mechanics of Communication

“Service”

“Client”

Transport?

Encoding?

Security?

Mechanics of Communication

“Service”

“Client”

Endpoint

Contract

Binding

Address

Endpoint

Contract

Binding

Address

Endpoint

Contract

Binding

Address

Contracts

[ServiceContract]

public interface INuggetAccess

{


[OperationContract]


string[] GetTopics();

}

.NET Interface

<definitions>





<portType>


<operation name=“GetTopics”> …


</portType>

</definitions>

WSDL

svcutil.exe

“Service”

“Client”

[ServiceContract]

public interface INuggetAccess

{


[OperationContract]


string[] GetTopics();

}

public class NuggetAccessService :


INuggetAccess

{


string[] GetTopics() { }

}

Implements

Consumes

request metadata (WSDL)

Richness of metadata

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

Service

Contracts

Endpoints

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

[
ServiceContract
]

public interface
INuggetAccess

{


[
OperationContract
]


List<
TopicInfo
>
GetTopics
();

}

Service

[
DataContract
(Namespace=…)]

public class
TopicInfo

{


[
DataMember
]


public
int

Id

}

Data


[
MessageContract
]

public class
TypedMessage

{


[
MessageBody
]


[
MessageHeader
]

}

Message

Hosting Services

public class Service :


INuggetAccess

{


string[]
GetTopics
() { }

}

IIS

<%@ ServiceHost Service=“Service" %>


NuggetAccessService.svc

MyApp.exe

ServiceHost host =


new ServiceHost();


host.Open();

References

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

Windows Communication Foundation

Client

WCF


sketched architecture


Binding

(ordered list of channel types &
config
)

channel type N

channel type 2

channel type 1

config

config

config

Your code

Service

Your code

Metadata

objects

XML

formatting

channel

channel

channel

Transport Channel
(HTTP, TCP, MSMQ, Pipes, Peer)

channel

channel

channel

decoding

encoding

behaviours

behaviours

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

Reliability

Security

channels

Configuration

Configuration

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

Client

Service

Singleton

Message B

Message C

Message A

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

Client

Service

Single Call

Single Call

Single Call

Message B

Message C

Message A

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

Client

Service

Per Session

Message B

Message A

session

Per Session

Message C

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...

Federated Security with WCF

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

client

Host (e.g. IIS)

implementation

state

response + token

initial call

serialize and store

state

token

Durable Services

Provider
-
based framework for easily adding
long
-
running abilities to WCF services

client

Host (e.g. IIS)

implementation

state

second call + token

load and
deserialize

state

token

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

Services with WF

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

©
2007
Microsoft
Ltd.
All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or tra
dem
arks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the
dat
e of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accu
rac
y of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.