Top Banner
47

2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

Jan 05, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.
Page 2: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

2

SOAP/WS-* And REST:Complementary Communication Styles

Mark ReesMicrosoft Services New Zealand

Session Code: ARC 306

Page 3: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

3

SOAP, WS-*, and WCF

REST and WCF

Comparing SOAP/WS-* and REST: Making the Right Choice

Agenda

Page 4: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

4

Web Services Today

Two approaches to Web servicesare in use today

SOAP and the WS-* specificationsRepresentational State Transfer (REST)

There is some competition between proponents of each approachBeginning with the .NET Framework 3.5, Windows Communication Foundation (WCF) provides built-in support for both

Microsoft is agnostic in this debate

Page 5: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

5

WCF Service

WCF Client

HTTP, TCP, MSMQ, etc.

Transport Channel

Transport Channel

Channel A

Channel B

Channel C

Channel A

Channel B

Channel C

WCF Communication BasicsChannels

WCF communication relies on channelsChannels can be grouped into channel stacksThe lowest channel in a stack is always the transport channel

Page 6: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

6

WCF Communication BasicsBindings

A WCF interface is associated with one or more bindingsEach binding creates a channel stack with specific functions

Binding 3Binding 1 Binding 2

WCF Service[ServiceContract]interface IExampleB{. . .}

[ServiceContract]interface IExampleA{. . .}

Transport Channel X

Channel A

Transport Channel X

Channel C

Transport Channel Y

Channel B

Channel C

Channel A

Channel B

Page 7: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

7

SOAP/WS-* And WCF

Page 8: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

8

POST /AccountAccess/Accounts.svcHost: www.quickbank.comSOAPAction: GetBalance…<soap:Envelope xmlns:soap= … <soap:Body> <GetBalance xmlns= … <Account>2</Account> </GetBalance> </soap:Body></soap:Envelope>

WCF Client

WCF Service

Account 1

Account 2

Account 3

Access Via SOAPIllustrating the approach

Page 9: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

9

Access Via SOAPA WCF interface

[ServiceContract]interface IAccount{ [OperationContract] int GetBalance(int account);  [OperationContract] int UpdateBalance(int account, int amount);}

Indicates that this interface should be exposed a

a service

Indicates that this method should be exposed as a

remotely callable operation

Page 10: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

10

Access Via SOAPA WCF binding

<endpoint address="http://www.qwickbank.com/AccountAccess/

Accounts.svc" contract=“AccountApp.IAccount" binding="basicHttpBinding“ />

Specifies where the service can be found

Specifies theservice’s interface

Specifies the binding that should be used to talk to the service

Page 11: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

11

BasicHttpBinding

HTTP Transport (Text Message

Encoding)

Channel

WCF Application

WCF Binding For SOAPUsing HTTP

Sends standard XML SOAP messages

over HTTP

Page 12: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

12

Describing WS-*Messaging and security

MessagingWS-Addressing: Allows using SOAP over any transport protocol, not just HTTPMessage Transmission Optimization Mechanism (MTOM): Allows sending binary data efficiently

SecurityWS-Security: Defines a way to convey various security tokens and moreWS-Trust: Defines how to request and receivesecurity tokensWS-SecureConversation: Allows establishing a security context, e.g., for more efficient encryption

Page 13: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

13

Describing WS-*Reliability, transactions, policy, and metadata

ReliabilityWS-ReliableMessaging: Allows reliable end-to-end communication through SOAP intermediaries

TransactionsWS-AtomicTransaction, WS-Coordination: Define howto do two-phase commit for ACID transactions

PolicyWS-Policy: Allows defining policies in various areas, e.g., security policies with WS-SecurityPolicy

Acquiring interface definitionsWS-MetadataExchange: Allows accessing a service’s WSDL definition and more

Page 14: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

14

WSHttpBinding

WCF Application

Reliable Session

Symmetric Security

Channel

Transaction Flow

HTTP Transport (Text Message

Encoding)

WCF Binding For SOAP/WS-*Using HTTP

Implements WS-AtomicTransaction

Implements WS-ReliableMesssaging

Implements WS-Security

Page 15: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

15

WSTcpBinding

WCF Application

Reliable Session

Symmetric Security

Channel

Transaction Flow

TCP Transport (Binary Message

Encoding)

WCF Binding For SOAP/WS-*Using TCP

Sends binary SOAP messages over TCP

Page 16: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

16

Access Via SOAP/WS-*Specifying WCF bindings

Using WS-Security, WS-ReliableMessaging, and/or WS-AtomicTransaction with WSHttpBinding or WSTcpBinding requires configuring the binding correctly

These configurations can get complicatedEspecially for securityWCF’s Configuration Editor Tool (SvcConfigEditor.exe) helps some

Page 17: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

17

WS-* In The Real World

WCF isn’t yet the dominant technologyfor Web services on Windows

Which makes the WS-* technologies lesswidely available

Cross-vendor interoperability for SOAP and the WS-* technologies isn’t perfect

Developers expect types to move unchanged from .NET to XML to Java (and back), which is hard

Page 18: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

18

REST And WCF

Page 19: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

19

WCF Service

GET www.quickbank.com/Accounts/2

Account 1

Account 2

Account 3

Access Via RESTIllustrating the approach

WCF Client

Page 20: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

20

Defining RESTAn architectural style

Two core principlesEverything is accessed through a uniform interfaceAll data is identified with a URI

Some subsidiary principlesBe cacheable whenever possibleBe statelessMore . . .

A first-rate description of RESTRESTful Web Services, by Leonard Richardson and Sam Ruby

Page 21: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

21

Access Via RESTA WCF interface[ServiceContract]interface IAccount{ [OperationContract] [WebGet] int GetBalance(string account);  [OperationContract] [WebInvoke] int UpdateBalance(string account, int amount);}

Sends request using HTTP GET

Sends request using HTTP POST (by default)

Page 22: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

22

The Semantics Of HTTP VerbsA closer look

REST typically depends on HTTP’s verbsPrimarily GET, PUT, POST, and DELETE

The semantics of some, e.g., GET, are well-definedThe semantics of POST are less clear

From the HTTP 1.1 spec:POST is designed to allow a uniform method to cover the following functions:

- Annotation of existing resources; - Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles; - Providing a block of data, such as the result of submitting a form, to a data-handling process; - Extending a database through an append operation.

The actual function performed by the POST method is determined by the server ...

Page 23: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

23

WCF Support For RESTSpecifying verbs and data formats

The Method parameter for WebInvoke allows specifying HTTP verbs other than POST, e.g.,:[WebInvoke(Method="PUT")]

The ResponseFormat parameter for WebGet and WebInvoke allows specifying how information is sent:

XML (the default)JavaScript Object Notation (JSON)Binary

Page 24: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

24

WCF Support For RESTWorking with URIs

RESTful communication typically requires workingwith lots of URIs

Every resource has its own URIURIs for a particular application commonly havea common format

Such as Accounts/<number>URI templates can make it easier to work with large numbers of similar URIs, providing

A way to express URI patternsSupport for working with URIs that match those patterns

Page 25: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

25

Access Via RESTSpecifying a WCF binding

The configuration is fairly simple:Specify binding=“webHttpBinding”Set the webHttp behavior for this endpoint

Alternatively, an application can use WebServiceHost instead of ServiceHost

This defaults to webHttpBinding with the webHttp behaviorNo configuration is needed

Page 26: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

26

WebHttpBinding

WCF Application

Channel

HTTP Transport (Web Message

Encoding)

WCF Binding For RESTUsing HTTP

Sends XML, JSON, or binary data

over HTTP

Page 27: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

27

Truth In Naming

Calling SOAP-based services “Web services” makes no sense

It has little to do with Web technologies

REST-based services truly deserve the name “Web services”

They’re entirely based on Web technologies:HTTP and URLs

Page 28: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

28

Comparing SOAP/WS-* And REST:Making The Right Choice

Page 29: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

29

Areas For Comparison

Exposing operations vs. exposing resourcesSOAP/WS-* and REST emphasize different things

CapabilitiesSOAP/WS-* and REST provide different functions

Page 30: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

30

Operations Versus ResourcesWhat is exposed?

REST Focused on accessing named resources(which usually means data) Every application exposes its data throughthe same interface

SOAP Focused on accessing named operations, each of which implements some logicDifferent applications provide different functionality, and so each one has a different interface

Page 31: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

31

RESTful Data AccessAmazon’s Simple Storage Service (S3)

S3 allows storing Objects in BucketsMuch like storing files in directories

Example operations:GET Object: Returns the contents of this objectGET Bucket: Returns a list of objects in this bucketPUT Object: Creates a new objectPUT Bucket: Creates a new bucketDELETE Object: Deletes an objectDELETE Bucket: Deletes a bucket

Page 32: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

32

RESTful Data AccessThe benefits of caching

For many (most?) services, the majority of client requests are reads

In a RESTful service, all reads rely on HTTP GET

The results of a GET are commonly cachedThis can allow better performance and more scalability for RESTful services exposed overthe Internet

Page 33: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

33

SOAP-based Operation AccessThe banking interface shown earlier

A service for banking functions might include operations such as

GetBalance(Account)UpdateBalance(Account, Amount)

These work well with either REST or SOAPSuppose the interface must also include

Transfer(FromAccount, ToAccount, Amount)This doesn’t map well to REST’s data-oriented model

It’s exposing logic, not data access

Page 34: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

34

SOAP/WS-* and RESTA capability summary

Conveying security tokens WS-Security HTTP, SSL

Protocol for invoking operations SOAP HTTP

Transport protocol HTTP, TCP, others HTTP

Language for describing interfaces

WSDL No standard

Acquiring security tokens WS-Trust No standard

Establishing a security context WS-SecureConversation SSL

Providing end-to-end reliability WS-ReliableMessaging No standard

Supporting distributed ACID transactions

WS-AtomicTransaction, WS-Coordination

No standard

Defining policy WS-Policy, et al. No standard

Acquiring interface definitions WS-MetadataExchange No standard

SOAP/WS-* REST

Page 35: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

35

Broad Standardization Versus Keep it SimpleTwo views of the world

Broad standardizationProvides a wide range of functionalityAllows interoperability, since everyone providesthe capability in the same wayIncreases the odds of correct implementation, since each vendor implements (and tests) the capability once rather than each application developerdoing it

Keep it SimpleYou probably won’t need it, so keep things simple

Page 36: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

36

SecurityREST

RESTful services commonly use HTTPS

Standards for carrying security tokensHTTP for username/passwordSSL for X.509 certificates

This is sufficient for many scenarios

Page 37: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

37

SecuritySOAP/WS-*

SOAP-based services can use HTTPSStandards for carrying security tokens

WS-Security forUsername/passwordX.509 certificateSAML tokenKerberos ticket

WS-Security also defines how to useXML Signature for integrityXML Encryption for privacy

WS-Trust definesHow to acquire security tokens

Page 38: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

38

TransactionsUsing WS-AtomicTransaction

ACID transactions that span multiple applications and/or databases are an important part of enterprise computing

They’re not all that common, but they’restill important

ACID transactions don’t usually make sense across the Internet

They’re mostly used within an enterpriseWS-AtomicTransaction addresses this problem

It relies on WS-Coordination

Page 39: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

39

TransactionsA simplified WS-AtomicTransaction example

Java EE

Browser1) Submit request 3) Invoke operation via SOAP, conveying

transaction context as defined by WS-Coordination

.NET Framework

2) Update .NET Application

4) UpdateEJB Application

Internet

Transaction Coordinator

5) Perform two-phase commit as defined by WS-Atomic Transaction

Transaction Coordinator

Page 40: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

40

Reliability

RESTAssumes the application deals with communication failures via application retries

SOAP with WS-ReliableMessagingBuilds acknowledgement/retry logic into the communications stackCan provide end-to-end reliability through one or more SOAP intermediaries

Page 41: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

41

Making A ChoiceSOAP/WS-* or REST?

Neither is right for every situationEach has its place

Some questions to ask:Does the service expose data or logic?

REST can be a good choice for exposing dataSOAP/WS-* can be better for exposing logic

Does the service need the capabilities of WS-*, or is a simpler RESTful approach sufficient?What’s best for the developers who will build anduse the service?

SOAP’s operation-oriented approach will feel more natural to many

Page 42: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

42

Conclusion

Both SOAP/WS-* and REST have good futures

WCF supports both

The best decisions come from reason,not emotion

Page 43: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

43

For Further Reading

Dealing with Diversity: UnderstandingWCF Communication Options in the .NET Framework 3.5

http://www.davidchappell.com/articles/white_papers/WCF_Diversity_v1.0.docx

Page 44: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

44

Q & A

Page 45: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

45

Resources

www.microsoft.com/teched Tech·Talks Tech·Ed BloggersLive Simulcasts Virtual Labs

http://microsoft.com/technet

Evaluation licenses, pre-released products, and MORE!

http://microsoft.com/msdn

Developer’s Kit, Licenses, and MORE!

Page 46: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

46

Please complete anevaluation

Page 47: 2 SOAP/WS-* And REST: Complementary Communication Styles Mark Rees Microsoft Services New Zealand Session Code: ARC 306.

47

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks 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 date 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 accuracy 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.