76
Minimal Infrastructure: SOA, WS-Addressing, WSRF, WSDL & Naming Stephen Davey, NeSC 1st NextGRID Training Course National e-Science Centre (NeSC), Edinburgh, 7 th March 2006

NextGRID: Presentation on Topic

  • Upload
    zubin67

  • View
    1.070

  • Download
    5

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: NextGRID: Presentation on Topic

Minimal Infrastructure:SOA, WS-Addressing, WSRF, WSDL & Naming

Stephen Davey, NeSC

1st NextGRID Training Course

National e-Science Centre (NeSC), Edinburgh, 7th March 2006

Page 2: NextGRID: Presentation on Topic

2

Contributors & AcknowledgmentsThis presentation is based on work by

Richard Hopkins, “Web Services Resource Framework - WSRF.” http://www.egee.nesc.ac.uk/trgmat/events/otherNA3/05-02-23-IntroWSRF-Edinburgh-UK/talks/WSRF.ppt.

With additional information from “The Joy of Web Services”.

http://vermont.mvc.mcc.ac.uk/JoyOfWebServices.ppt. Author: M. McKeown.

“Foundation Grid Services using WSRF and OGSA base profile.” http://www.egee.nesc.ac.uk/trgmat/events/otherNA3/05-07-10-SummerSchool-Naples-Italy/talks/Tues_7_19.ppt. Author: D. Snelling.

“Web Services, WSRF and GT4”. http://gks05.fzk.de/upload/lectures/Mineter_WS_WSRF_GT4_v1.pdf. Author: M. Mineter.

These slides have been compiled / edited by Stephen Davey

Page 3: NextGRID: Presentation on Topic

3

Introduction - Aim & Scope

These slides intend to cover the following: NextGRID Minimal Infrastructure

Service-Oriented ArchitectureOGSA WSRF Base Profile 1.0WSDL 1.1Naming

They are at an Introductory level, aimed at people with some knowledge in this area.

Page 4: NextGRID: Presentation on Topic

4

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 5: NextGRID: Presentation on Topic

5

What is a Service-Oriented Architecture?

Service-Oriented Architecture (SOA) This term is increasingly used to refer to an

architectural style of building reliable distributed systems that deliver functionality as services, with the additional emphasis on loose coupling between interacting services.

Service A software component participating in a service-

oriented architecture that provides functionality and/or participates in realizing one or more capabilities.

[OGSA Glossary v1.0]

Page 6: NextGRID: Presentation on Topic

6

What is a Service? In computing terms, a ‘service’ is simply a

function that can be invoked via a well-defined remote interface.

[OGSI primer]

Systems interact with a Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.

[W3C – Web Services Architecture]

Page 7: NextGRID: Presentation on Topic

7

Benefits of Web Services & SOA Benefits

Allows us to hide the details of how a service is implemented; only URL and data types are required

It is largely irrelevant to the client whether the service is developed with Java or ASP.NET or if it is running on Windows, Linux or any other platform

Key Service Oriented Principles Composable Simple parts Intended for distributed systems Acknowledgement of boundaries

Page 8: NextGRID: Presentation on Topic

8

SOA Triangle

Service Registry

Service Requestor

Service Provider

Find (Discover) Publish

Bind (Interact)

Service Description

Page 9: NextGRID: Presentation on Topic

9

Web services stack

Application

rpcrouter

SOAP

HTTP

TCP/IP

Infrastructure(Data link)

Application (servlet)

Web server

SOAP

HTTP

TCP/IP

Infrastructure(Data link)

Page 10: NextGRID: Presentation on Topic

10

SOAP

“SOAP provides a simple lightweight mechanism for exchanging structured and typed information between peers in a decentralized, distributed environment using XML”[Microsoft]

Page 11: NextGRID: Presentation on Topic

11

SOAP over HTTP

HTTP Headers

<soap:Envelope> <soap:Header> XML… </soap:Header> <soap:Body> XML payload… </soap:Body></soap:Envelope>

SOAP Envelope

Header

Body

Message Pay Load

Page 12: NextGRID: Presentation on Topic

12

SOAP Structure

Envelope – contains the entire SOAP message.

Header – (optional) contains header information.

Body – contains the application pay load.

Message Payload – the part of the message that is intended for the application.

Page 13: NextGRID: Presentation on Topic

13

Sample SOAP<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schema.xmlsoap.org/soap/envelope/” xmlns:SOAP-ENC=“http://schema.xmlsoap.org/soap/encoding/”

SOAP-ENV:encodingStyle=“http://schema.xmlsoap.org/soap/encoding”>

<SOAP-ENV:Body> <getHostname/> </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Invokes the “getHostname” operation on the Web service.

Page 14: NextGRID: Presentation on Topic

14

OGSA WSRF Base Profile 1.0 Key parts mandated in the profile:

Addressing: WS-Addressing endpoint references and places some constraints

on their structure, thus enabling interoperable addressing. Resource Properties:

resource must support certain resource properties, support for certain operations that are optional in the WS-

ResourceProperties specifications. Resource Lifetime:

ImmediateResourceTermination portType, and ScheduledResourceTermination portType (and their associated

operations and properties). Base Notification:

NotificationProducer portType (and its associated operations and properties to provide notification using a publish/subscribe pattern).

Base Faults: WS-BaseFaults (and extends the fault structure).

Page 15: NextGRID: Presentation on Topic

15

WS-Addressing

Before WS-Addressing WS-Addressing specification

Endpoint References EPRs and SOAP

Message Addressing Properties (headers) To, From, ReplyTo, FaultTo, Action, MessageID,

RelatesTo. Reference parameters. Anonymous & None URIs.

Page 16: NextGRID: Presentation on Topic

16

Before WS-Addressing

To locate a web service had to ask for the URL of the endpoint or the WSDL.

Plus might need to identify the web services instance. Could use a URL with a session identifier (e.g.

appending ?resourceID=123).Could add extra information in SOAP

headers, but now no longer bound to one specific transport protocol.

Page 17: NextGRID: Presentation on Topic

17

Endpoint References (EPRs) Web service endpoint is a entity to which Web

service messages can be addressed. Endpoint references convey the information

needed to address a Web service endpoint. EPR is basically a URL wrapped by some XML

elements.

<wsa:EndpointReference> <wsa:Address>xs:anyURI</wsa:Address> (1..1)<wsa:ReferenceParameters>xs:any*</wsa:ReferenceParameters> ?

<wsa:Metadata>xs:any*</wsa:Metadata>?

</wsa:EndpointReference>

Page 18: NextGRID: Presentation on Topic

18

EPRs and SOAP How does a Service return a reference to a new entity?

Does so by returning an EPR:

E.g. An EPR with an added ReferenceParameters element.

<soap:Envelope ...> <soap:Body> <widget:createWidgetResponse> <widget:widgetReference> <wsa:Address>http://host/WidgetService</wsa:Address> <wsa:ReferenceParameters> <widget:resourceID>123</widget:resourceID> </wsa:ReferenceParameters> </widget:widgetReference> </widget:createWidgetResponse> </soap:Body> </soap:Envelope>

Page 19: NextGRID: Presentation on Topic

19

Message Addressing PropertiesTo Target Web service's URI. Typically same as the HTTP request's

URL, but it is not required to be. <wsa:To> http://host/WidgetService </wsa:To> The To header should be the same value as the <wsa:Address>

element when using an EPR.

From EPR of the message's (source) sender.

Used in cases where an acknowledgement needs to be sent back to the sender (WS-ReliableMessage).

<wsa:From> <wsa:Address> http://client/myClient </wsa:Address> </wsa:From>

Page 20: NextGRID: Presentation on Topic

20

Message Addressing (cont.)ReplyTo Any response from the Web service should be sent to the ReplyTo

EPR. From and ReplyTo can be two distinct EPRs, the message's sender

might not be the endpoint that is meant to receive the response. <wsa:ReplyTo> <wsa:Address> http://client/myReceiver </wsa:Address> </wsa:ReplyTo>

FaultTo If the response to a message is a SOAP fault, the fault should be

sent to the EPR in the FaultTo header. <wsa:FaultTo> <wsa:Address> http://client/FaultCatcher </wsa:Address> </wsa:FaultTo>

Page 21: NextGRID: Presentation on Topic

21

Message Addressing (cont. 2)MessageID The MessageID is a URI that uniquely identifies a message. <wsa:MessageID>urn:uuid:12-34-56-78</wsa:MessageID>

Action The Action header is the in-envelope version of the SOAP HTTP

Action header. REQUIRED. <wsa:Action> http://host/widgetOp </wsa:Action>

RelatesTo Typically used on response messages to indicate that it is related to

a previously-known message and to define that relationship. <wsa:RelatesTo RelationshipType="wsa:Response"> urn:uuid:12-34-56-78</wsa:RelatesTo>

Page 22: NextGRID: Presentation on Topic

22

Constructing SOAP Messages

<wsa:Address> value is copied into the <wsa:To> header block.

Reference parameters.Each element in <wsa:ReferenceParameters>

(including all of that elements children, attributes and namespaces) is copied literally as header blocks in the SOAP message.

Each header block added as a result of the above rule is annotated with wsa:IsReferenceParameter = ‘true’.

Page 23: NextGRID: Presentation on Topic

23

Anonymous & None URIs

http://www.w3.org/2005/08/addressing/anonymous In all of the headers can use a special

anonymous URI. When you use this URI, you are indicating that

there is no real endpoint available for this address.

http://www.w3.org/2005/08/addressing/none Messages sent to EPRs whose address is this

value MUST be discarded. Typically used to designate that no reply or fault

message should be sent.

Page 24: NextGRID: Presentation on Topic

24

WS-Addressing WS-Addressing specification –

requires the Address element, but resourceID is specific to the WidgetService.

SOAP envelope of future requests to this EPR would take the form: <soap:Envelope...> <soap:Header> <wsa:To> http://host/WidgetService </wsa:To> <widget:resourceID wsa:IsReferenceParameter=true>

123</widget:resourceID>

</soap:Header> <soap:Body> ... </soap:Body> </soap:Envelope>

Page 25: NextGRID: Presentation on Topic

25

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 26: NextGRID: Presentation on Topic

26

Web Services Resource Framework

Stateful ResourcesWeb service itself (front end) is stateless.Maintains state in a back-end.Service request identifies the specific

resource. WSRF is for Persistent State (stateful

resource)One message exchange produces a long-

lived change in state which affects other message exchanges.

Page 27: NextGRID: Presentation on Topic

27

WSRF Architecture A stateful (WS) resource

Is a repository for persistent state Like an object in an object-oriented architecture.

Has state that comprises a set of state data Each item of state data is a resource property. A resource property is expressible as an XML document, which can

in principle be retrieved and updated. E.g. Bank Account has properties:

Balance owed, Credit limit, Latest statement, …

Differences from Object-Oriented Architecture O-O object has just one interface, and is defined by the operations on it. The type of a WS-resource is

The type of its resource properties document Not the signatures of its operations

Page 28: NextGRID: Presentation on Topic

28

WSRF Architecture A stateful (WS) resource

…. Has a well-defined life-cycle – creation and destruction

Destruction can be explicit or scheduled Can be known and acted upon by one or more Web Services

Has a globally unique identifier – http://www.company/CreditCard#Ac7 Can be passed between services to identify the resource

Is associated with one or more web services, providing interfaces for manipulating it.

A WS-Resource comprises: its service; the resource itself

http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-cs-01.pdf

Page 29: NextGRID: Presentation on Topic

29

Running ExampleSeat Booking System for a Specific Event Resource – Event6

Properties Places – number of seats in total Held – number of seats with provisional bookings Booked – number of seats with confirmed bookings

Service End-point – www.events.org/E6 Operations

Get – returns the resource properties Reserve – creates a reservation resource

….

Page 30: NextGRID: Presentation on Topic

30

Running Example Resource – Reservation (i.e. a booking)

Properties – RNo – reservation number Identifier, not an actual

property Firm - number of seats with confirmed booking Hold – number of seats with provisional booking Seats – list of seat numbers allocated Arrival – expected time of arrival

Service End-point - www.events.org/E6res Operations

Get – retrieve the properties SetArrival – change/set the Arrival property Change – reset reservation properties (firm=n; hold=m)

….

Page 31: NextGRID: Presentation on Topic

31

Referencing

Resource-qualified endpoint reference – the service address and specific resource identifier – part of WS-Addressing Standard.

If service has only one resource instance (1:1) don’t need to include resource identifier in address.

www.events.org/E6 places: 120

held: 6

booked: 8

1:*

reserve(3, “hold”)

firm:0

hold:3

seats:

K1, K2, K3

arrival: nilwww.events.org/E6res

create

(www.events.org/E6 :: X3)Resource qualified

End-point reference

1:1

Change(Firm=2, Hold=0)

•RNo: X3

www.events.org/E6

www.events.org/E6res :: X3

Page 32: NextGRID: Presentation on Topic

32

Multiply-serviced Resource

Two end-point references www.events.org/E6res www.events.org/E6admin

Each providing a different interface to the same set of resource instances

firm:0

hold:3

seats:

K1, K2, K3

arrival: nil

www.events.org/E6resChange(Firm=2, Hold=0)

•RNo: X3www.events.org/E6res :: X3

www.events.org/E6adminclearHolds(1)

www.events.org/E6admin :: X3

- Get- SetArrival- Change

- ClearHolds- ChangeSeats- Get

Page 33: NextGRID: Presentation on Topic

33

Operations on Resource PropertiesWS-ResourcePropertieshttp://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-pr-01.pdf

GetResourcePropertyDocument - retrieve the values of all resource properties of the WS-Resource.

GetResourceProperty – get single property. Mandatory. GetMultipleResourceProperties – get multiple properties. QueryResourceProperties - query resource properties document

using a query expression such as XPath. PutResourcePropertyDocument – replace all properties. SetResourceProperties - modify the values of multiple resource

properties – Insert, Update, Delete. InsertResourceProperties - insert new values of a single resource

property. UpdateResourceProperties - replace the existing values of a

single resource property. DeleteResourceProperties - removal of all values of a single

resource property.

Page 34: NextGRID: Presentation on Topic

34

GetResourceProperty

Returns all elements with the specified element name

<env:envelope ….namespace definitions ..>

<env:Header> <wsa:Action> http://...wsrf.../GetResourceProperty </>

<wsa:To env:mustUnderstand=“1”> www.events.org/E6res </>

<m:ResId>X7</> </>

<env:Body> <wsrp:GetResourceProperty>tns:seat </> </></>

<env:envelope ….namespace definitions ..>

<env:Header> <wsa:Action> http://...wsrf.../ GetResourcePropertyResponse </>

<wsa:To env:mustUnderstand=“1”> www. … requestor … </><m:ResId>X7</> </>

<env:Body> <wsrpl:GetResourcePropertyResponse>

<seat>K1</> <seat>K2</> <seat>K3</> </></>

Page 35: NextGRID: Presentation on Topic

35

Get Multiple Resource Properties

Must specify at least one Order in response should follow order in request

<env:envelope ….namespace definitions ..>

<env:Header> <wsa:Action> http://...wsrf.../GetMultipleResourceProperties </>

<wsa:To env:mustUnderstand=“1”> www.events.org/E6res </>

<m:ResId>X7</> </>

<env:Body> <wsrp:GetMultipleResourceProperties>

<wsrp:ResourceProperty>tns:firm </>

<wsrp:ResourceProperty>tns:seat </></></>

<env:envelope ….namespace definitions ..>

<env:Header> <wsa:Action> http://...wsrf.../ GetResourcePropertyResponse </>

<wsa:To env:mustUnderstand=“1”> www. … requestor … </><m:ResId>X7</> </>

<env:Body> <wsrpl:GetResourcePropertyResponse>

<firm>3</> <seat>K1</> <seat>K2</> <seat>K3</> </></>

Page 36: NextGRID: Presentation on Topic

36

SetResourceProperties

A number of SetRequestComponents, each – insert, update, delete Must be done in given order – could have several for same element name If failure on one:

Must not do any subsequent ones Final result may reflect the partial processing Final result may be the original

<env:envelope ….namespace definitions ..>

<env:Header> <wsa:Action> http://...wsrf.../SetResourceProperties </>

<wsa:To env:mustUnderstand=“1”> www.events.org/E6res.</>

<m:ResId>X7</> </>

<env:Body>

<wsrp:SetResourceProperties>

<wsrp:Update><tns:hold>0</> <tns:firm>4</></>

<wsrp:Delete resourceProperty=“tns:arrival”>

<wsrp:Insert> ><tns:seat>J9</> </></></>

<env:envelope> ….<env:Body> <wsrpl:GetResourcePropertyResponse></></></>

Page 37: NextGRID: Presentation on Topic

37

SetResourceProperties

Faults ResourceUnknownFault InvalidResourcePropertiesRequestContent

The result would be a properties document which is invalid, e.g. too many seats if maxoccurrs=3

UnableToModifyResourceProperty – a read-only resource InvalidResourcePropertyQName SetResourcePropertyRequestFailed – one or more components failed … to be defined Fault message must indicate whether effects of processing non-failed

components were restored

firm:0

hold:3

seats:

K1, K2, K3

arrival: 15:00:00•RNo: X3

firm:4

hold:0

seats:

K1, K2, K3, J9

RNo: X3

<wsrp:Update><tns:hold>0</>

<tns:firm>4</></>

<wsrp:Delete resourceProperty=“tns:arrival”>

<wsrp:Insert> ><tns:seat>J9</> </></></>

Page 38: NextGRID: Presentation on Topic

38

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 39: NextGRID: Presentation on Topic

39

WS-ResourceLifetime

Lifetime of a WS-Resource is defined as the period between its instantiation and its destruction.

Specification defines standard by which:WS-Resource can be destroyed. Lifetime can be monitored.

Specification does not prescribe the means by which a WS-Resource is created.

Page 40: NextGRID: Presentation on Topic

40

Immediate Destruction Destroy

<s11:Envelope . . .> <s11:Header>

. . .<wsa:Action>

http://docs.oasis-open.org/wsrf/rlw-1/ImmediateResourceTermination/DestroyRequest

</wsa:Action>. . .</s11:Header><s11:Body>

<wsrf-rl:Destroy/></s11:Body>

</s11:Envelope>

Page 41: NextGRID: Presentation on Topic

41

Scheduled Destruction

SetTerminationTimeRequestedTerminationTimeRequestedLifetimeDuration

Querying Current TimeClock synchronization between the service

requestor and the service provider.Resource properties:

<wsrf-rl:CurrentTime> <wsrf-rl:TerminationTime>

Page 42: NextGRID: Presentation on Topic

42

Termination Time Expiration

If service requestor fails to successfully update the termination time of a WS-Resource before the termination time expires, the WS-Resource MAY be destroyed and therefore no longer be accessible.

An implementation MAY delay destruction of the WS-Resource at its own discretion.

Page 43: NextGRID: Presentation on Topic

43

Resource Destruction Immediate Destruction

Send a destroy message to the resource-qualified endpoint Thereafter any attempt to access it must result in a Unknown Resource

fault message – this is a synchronisation point – the reply to the destroy The consumer could decide to destroy the reservation resource – cancelling

the reservation Scheduled Destruction

Can request a modification in the termination time Extend the provisional booking for another 2 days If termination time is in the past this may be interpreted as an

immediate asynchronous destroy

A resourced service should have a destruction policy which does not depend on action by the consumer service Consumer may disappear at any time Consumer may be impolite

Risk of having the physical resources never recovered, and performance consequences of large number of useless resource instances.

Page 44: NextGRID: Presentation on Topic

44

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 45: NextGRID: Presentation on Topic

45

WS-Notification

WS – BaseNotification WS – Topics WS – BrokeredNotification

Page 46: NextGRID: Presentation on Topic

46

Notification WS-Notification is draft standards dealing with the

The Notification-based Interaction pattern – Event Driven Model - Subscribing to a Notification service on some topics

E.g. My boss (Subscriber) informs a press-cutting service (Publisher) that it is to notify me (Consumer) of articles on WebServices (Topic) appearing in the popular press (Producer)

Topic Space - a forest of topic Trees

Publisher – distributes notification messages according to subscriptions Producer – generates notification messages for Consumers Can combine Producer and publisher - same service generates the event and

sends it to the subscribers; otherwise Publisher is a Broker Can separate them – producer generates the notification and sends it to a

broker who distributes it according to subscriptions Subscriber creates a subscription for a consumer in a Publisher Consumer receives notification messages (may combine with subscriber)

webServices

WSRF WSDL

travel

USA EU

Page 47: NextGRID: Presentation on Topic

47

Notification and WSRF NotificationProducer Interface

Notify Subscribe GetCurrentMessage

PullPoint Interface SubscriptionManager Interface

Relation to WSRF A subscription is a resource A resourced service can be producer/publisher:

To notify consumers of changes in state of the resource Value change Destruction

Page 48: NextGRID: Presentation on Topic

48

Destruction Notification Pattern

WS-Notification standard deals with this Subscribe to the resource Resource notifies subscriber

www.events.org/E6 places: 120

held: 6

booked: 8

reserve(3, firm)

firm:3

hold:0

www.events.org/E6res

Subscribe(topic=ResourceTermination)

•RNo: X3

www.events.org/E6res :: X3

(www.events.org/E6 :: X3)

EventCancelled

www.events.org/E6res : X3Notify(“Event Cancelled”, dateTime)

Page 49: NextGRID: Presentation on Topic

49

Destruction Notification If Resource chooses to support the pattern of notifying interested

parties when it is destroyed And to use the WS-Notification standard, Then must follow this standard The TopicSpace = “ResourceLifetime” The Topic name=“ResourceTermination” The notification message must include the following element

<wsrl:TerminationNotificaton>

<wsrl:TerminationTime> xsd:dateTime </>

<wsrl:TerminationReason> xsd:any </>?</>

Page 50: NextGRID: Presentation on Topic

50

Value Change Notification Can similarly subscribe to being notified of value changes for the resource. If the resource supports the property value-change notification pattern, and

it uses WS-Notification then it must follow these standards Subscription can be a sub-set of the resource properties

E.g. wanting notification of changes in seat numbers The notification message must contain an element of the form

<wsrp:ResourcePropertyValueChangeNotification>

<wsrp:OldValue> <seat>K1</> <seat>K2</> <seat>K3</></>

<wsrp:NewValue> <seat>K1</> <seat>K2</> <seat>J4</></></>

One such notification for every value change OldValue – if nil, there was no value; if absent the old value was not recorded NewValue – can be nil !!!Standard does not actually allow multiple components!!!

Page 51: NextGRID: Presentation on Topic

51

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 52: NextGRID: Presentation on Topic

52

WS-BaseFaults

Difficult when interfaces use different conventions for representing common information in fault messages.

So specify Web Service fault messages in a common way.

WS-BaseFaults defines an XML Schema type for a base fault, along with rules for how this fault type is used by Web Services.

Page 53: NextGRID: Presentation on Topic

53

Base Fault Type Base fault has the following syntax:<BaseFault>

<Timestamp>xsd:dateTime</Timestamp><OriginatorReference>

wsa:EndpointReferenceType</OriginatorReference> ?<ErrorCode dialect="anyURI">

xsd:anyType</ErrorCode> ?<Description>xsd:string</Description> *<FaultCause>{any}</FaultCause> ?{any}*

</BaseFault>

Page 54: NextGRID: Presentation on Topic

54

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 55: NextGRID: Presentation on Topic

55

What is WSDL? In XML format For describing network services

Which operate either on Documents Procedure calls

Describes the exposed interface – i.e. What the consumer sees of the service

Constitutes a contract with the client Provides a specification of what is offered by the

service provider which can be relied on by the service consumer.

Page 56: NextGRID: Presentation on Topic

56

What is WSDL? Supports separation of concerns

logical structure of messages binding to a specific underlying protocol definition of a particular deployed service

To allow common definition and re-combination Does not describe what the service does, how it does it

or how you should use the service – i.e. does not provide semantic information about the service.

Here using WSDL 1.1 – a W3C submission (March 2001).

WSDL 2.0 – is a W3C Candidate Recommendation (6 January 2006) – many differences.

Page 57: NextGRID: Presentation on Topic

57

Structure<import> incorporate external definitions*<types> logic structure of data being transmitted?

<message> transmittable messages*

<portType> interface – operations and assoc. messages*

<binding> how messages will be transmitted*

<service> how a service is accessed*

<schema>*

<part>*

<port> web-address ref*

<operation>*

<MESSAGETYPE>*

<TYPE>*

Abstra

ct

Physic

al

Page 58: NextGRID: Presentation on Topic

58

Contents of a WSDL document Types– a container for data type definitions using some

type system (such as XSD). Message– an abstract, typed definition of the data being

communicated. Operation– an abstract description of an action

supported by the service. Port Type–an abstract set of operations supported by

one or more endpoints. Binding– a concrete protocol and data format

specification for a particular port type. Port– a single endpoint defined as a combination of a

binding and a network address. Service– a collection of related endpoints.

Page 59: NextGRID: Presentation on Topic

59

Services Structure Example Company Provides two types of service (PortTypes)

General Service Get general information Open an account

Customers Service (being a “Customer” = having an account)

Purchase Order Invoice Payment Advice Get Statement

Both over two kinds of binding RPC Email

Page 60: NextGRID: Presentation on Topic

60

Services Structure Example

Binding:

Service: Location=

www. …/WS-RPCwww…/GenRPC www…/CustRPCwww…/GenEM www…/CustEM

Binding:

Service: Location=

www. …/WS-RPC

Binding:

Service: Location=

www. …/WS-EM

Binding:

Service: Location=

www. …/WS-EM

PortType:General

Op: GenInfo

Op: OpenAcc

PortType:Customer

Op: PurchOrder

Op: Inv

Op: PayAdv

Op: GetStmt

Op: Overdue

Message: Mess1

….

Schema

….

Page 61: NextGRID: Presentation on Topic

61

Services Structure Example

Binding:

Service: Location=

www. …/WS-RPCwww…/GenRPC www…/CustRPCwww…/GenEM www…/GenEM

Binding:

Service: Location=

www. …/WS-RPC

Binding:

Service: Location=

www. …/WS-RPC

Binding:

Service: Location=

www. …/WS-RPC

PortType:General

Op: GenInfo Op: OpenAcc

PortType:Customer

Op: PurchOrder Op: Inv Op: PayAdv Op: GetStmt Op: Overdue

Message: Mess1

….

Schema

….

Four message patterns IN One-way OUT Notify * IN then OUT Request/Response OUT then IN Solicit/Response *

* Reversed rolesProvider proactive = clientConsumer reactive = server

Page 62: NextGRID: Presentation on Topic

62

Request - Response

<wsdl:message name=POinM>

<part name=accInfo type=m:accInfoT>

<part name=order element=m:accInfoT>

</>

Most Common Pattern Message to service provider; reply to service consumer

A logical pattern, Binding might be either An HTTP request/response Two HTTP requests

<wsdl:portType name=CustomerPort>

<wsdl:operation name=PurchOrder>

<wsdl:input name=PurchOrderRequest message=POinM>

<wsdl:output name=PurchOrderResponse message=DeliveryScheduleM>

<wsdl:fault name=PurchOrderDuffAccFM message=DuffAccFM>

….. </>

<wsdl:operation …> </> …</>

Default message name – operation + request/response

Page 63: NextGRID: Presentation on Topic

63

Solicit - Response Backwards two-way Pattern

Message from service provider to consumer; reply from consumer to provider Example – “overdue payment”

Company sends this notification to the customer and expects a response

<wsdl:portType name=CustomerPort>

<wsdl:operation name=Overdue>

<wsdl:output name=OverdueSolicit message=OverdueOutM>

<wsdl:input name=OverdueResponse message=ExcuseInM>

<wsdl:fault name=OverdueThreatOutFM message=ThreatOutFM>

….. </>

<wsdl:operation …> </> …</>

Default message name – operation + solicit/response

Opposite order!

Page 64: NextGRID: Presentation on Topic

64

Single Message Notify

Message from service provider to consumer, with no reply Example – “Invoice”

Send an invoice One-way -- Request with no reply

Message from service consumer to provider Example – “payment advice”

Company gets notification from customer that a payment has been made

<wsdl:portType name=CustomerPort>

…..

<wsdl:operation name=Inv>

<wsdl:output name=Inv message=InvoiceOutM> </>

<wsdl:operation name=PayAdv>

<wsdl:input name=PayAdv message=PaymentAdviceInM> </>

</>

Default message name – operation

Can’t have fault message

Page 65: NextGRID: Presentation on Topic

65

Binding - General A Binding defines

For a particular PortType – named as its “type” Particular message format and communication protocol details

By extensibility point A standard extension is SOAP binding

Can have multiple bindings for one PortType Different modes in which it can be accessed

Binding:

Service: Location=www…/GenRPC www…/CustRPCwww…/GenEM www…/GenEM

Binding:

Service: Location=

Binding:

Service: Location=

Binding:

Service: Location=

PortType:General

Op: GenInfo ….

PortType:Customer

Op: PurchOrder ….

Message: MessSchema

Page 66: NextGRID: Presentation on Topic

66

Binding Extensions There are a number of defined bindings

SOAP – identify the SOAP standards Transport

Over HTTP ….

Style RPC Document

Use Literal Encoded

HTTP MIME

SOAP over HTTP, Literal is most commonly used all we will deal with here

Page 67: NextGRID: Presentation on Topic

67

RPC vs Document <wsdl:message name=POinM>

<part name=accInfo type=…>

<part name=order element=…>

</>

<wsdl:operation name=PurchOrder>

<wsdl:input name=PurchOrderRequest message=POinM>

<wsdl:output name=PurchOrderResponse message=POoutM> ….. </>

<wsdl:message name=POoutM>

<part name=Result type=…>

<part name=delivSched type=…>

</>

<env:Body>

<m:PurchOrderRequest>

<accInfo> … </>

<order> … </></></>

<env:Body>

<accInfo> … </>

<order> … </></></>

<env:Body>

<m:PurchOrderResponse>

<Result> … </>

<delivSched> … </></></>

<env:Body>

<Result> … </>

<delivSched> … </></></>

RPCActual messages

DocumentActual messages

Page 68: NextGRID: Presentation on Topic

68

Introduction - Contents What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming

Page 69: NextGRID: Presentation on Topic

69

Naming

Naming definitions Requirements on names Existing naming schemes Overview of the Handle syntax NextGRID Experiment in WP1 Summary

Page 70: NextGRID: Presentation on Topic

70

Naming definitions “Name” - attribute used to identify an entity. In OGSA-naming, 3

types: human-oriented names, abstract names, and addresses. “Human-oriented name” - a naming scheme designed to be easily

interpreted by humans (e.g. human-readable and human-parsable). “Abstract name” - persistent name suitable for machine

processing that does not necessarily contain location information. Abstract names are bound to addresses.

“Address” - specifies the location of an entity.

Additionally, “Resolution” – Name resolution is the mapping of human names to

abstract names, which are then mapped to some form of address. E.g. A name resolution function could be:

Address Resolve(AbstractName);

Page 71: NextGRID: Presentation on Topic

71

Requirements on namesNames and naming schemes need to: Be transmitted and resolved in a new context. Name all entities in the universe of discourse that need naming. Allow autonomous allocation of names - it is solely the responsibility

of a name issuing authority to determine conditions under which it will issue a name.

Allow scalable distributed name resolution. Be secure and reliable – there must be no spoofing of the naming

service and no impersonating of names. It must support digital signatures, encryption and non-repudiation.

Be robust and trusted - data confidentiality and privacy need to be included.

Have global scope - it needs to have the same meaning everywhere, extensible & internationalisable.

Globally unique – the same name will never (to best probability affordable) be assigned to two different objects.

Page 72: NextGRID: Presentation on Topic

72

Existing naming schemes Uniform Resource Identifier (URI) - a string used for identifying an

abstract or physical resource in a web application. Uniform Resource Locator (URL) - the address of an Internet

resource named as a combination of a DNS name and local name. Uniform Resource Name (URN) - a subset of URI that defines a

namespace registration mechanism for persistent namespaces under URI. E.g. urn:nextgrid:wp1:usecase:wp3:20050427:FinancialScenario

Universally-unique identifier (UUID) / Globally Unique Identifier (GUID) - 128 bits long, and can provide a guarantee of uniqueness. E.g. f81d4fae-7dec-11d0-a765-00a0c91e6bf6.

Life Science Identifiers (LSIDs) - persistent, location-independent, resource identifiers for uniquely naming biologically significant resources. E.g. URN:LSID:rcsb.org:PDB:1D4X:22.

Extensible Resource Identifier (XRI) - built directly on top of URI & IRI specifications. Examples: xri://@example.org*agency*department/!(urn:ISBN:0-395-36341-1) xri://@!9990!A58F!1C3D/!(urn:ISBN:0-395-36341-1)

Page 73: NextGRID: Presentation on Topic

73

Existing naming schemes Endpoint reference (EPR) – a WS-Addressing construct that identifies a

message destination. In WSRF an EPR conveys the information needed to identify or reference a stateful resource.

WS-Naming – a profile on top of the WS-Addressing specification, where additional elements AbstractName and ReferenceResolver are included in the MetaData element of a WS-Addressing Endpoint Reference.

Resource Namespace Service (RNS) - RNS primarily addresses the human-readable level rather than the abstract level. Intended to facilitate namespace services for a wide variety of Grid applications.

Domain Name Service (DNS) – primarily designed for mapping domain names into IP Addresses for network routing purposes.

X.500 / LDAP - X.500 defines a hierarchical data and information model with a set of protocols to allow global name lookup and search. LDAP (Lightweight Directory Access Protocol) is a simpler protocol aimed at being easier to implement.

Handle.net - a general-purpose global name service that allows secured name resolution and administration over networks such as the Internet. It manages handles, which are unique names for digital objects and other Internet resources.

Page 74: NextGRID: Presentation on Topic

74

Overview of the Handle syntax Handle System architecture defines a hierarchical service model.

Single top level service, known as the Global Handle Registry (GHR). Lower levels known as Local Handle Services (LHS).

Syntax:<Handle> ::= <Handle Naming Authority> "/" <Handle Local Name>

Handle.net meets all of the requirements for allowing scalable distributed name resolution, autonomous allocation of names, be secure, extensible, and guarantee global uniqueness.

Server and client software is available through its website, http://www.handle.net/download.html.

Handle Proxy Sever is http://hdl.handle.net/

Page 75: NextGRID: Presentation on Topic

75

NextGRID Experiment in WP1 NextGRID project Naming Authority

Handle: 0.NA/2131

Also have sub-prefixes for workpackages. 0.NA/2131/WP1

NextGRID BSCW Server

Client PC

Handle Admin Tool

Other NextGRID Server

Other NextGRID

Service

Naming webpage

Handle System Proxy Server

http://hdl.handle.net/ webpage

Resolve name. (Read-only)

Create, delete, modify & list names.

dev.nextgrid.org(EPCC Server)

Handle Names

DB

Handle Server

Software

NextGRID Naming Service

Create, delete, modify & list names.

Interfaces ??Security model ??

Page 76: NextGRID: Presentation on Topic

76

The End What is a Service-Oriented Architecture?

Web services stack. SOAP.

OGSA WSRF Basic Profile 1.0 WS-Addressing WS-ResourceProperties WS-ResourceLifetime WS-BaseNotification WS-BaseFaults

WSDL 1.1 Naming