Title: Minimal Infrastructure: SOA, WS-Addressing, WSRF, WSDL
1Minimal InfrastructureSOA, WS-Addressing, WSRF,
WSDL Naming
1st NextGRID Training Course National e-Science
Centre (NeSC), Edinburgh, 7th March 2006
2Contributors Acknowledgments
- This 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/WSR
F.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/e
vents/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
3Introduction - Aim Scope
- These slides intend to cover the following
- NextGRID Minimal Infrastructure
- Service-Oriented Architecture
- OGSA WSRF Base Profile 1.0
- WSDL 1.1
- Naming
- They are at an Introductory level, aimed at
people with some knowledge in this area.
4Introduction - 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
5What 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
6What 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
7Benefits 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
8SOA Triangle
Service Registry
Find (Discover)
Publish
Service Description
Service Requestor
Service Provider
Bind (Interact)
9Web services stack
Application
Application (servlet)
rpcrouter
Web server
SOAP
SOAP
HTTP
HTTP
TCP/IP
TCP/IP
Infrastructure (Data link)
Infrastructure (Data link)
10SOAP
- SOAP provides a simple lightweight mechanism for
exchanging structured and typed information
between peers in a decentralized, distributed
environment using XMLMicrosoft
11SOAP over HTTP
HTTP Headers
ltsoapEnvelopegt ltsoapHeadergt
XML lt/soapHeadergt
ltsoapBodygt XML payload
lt/soapBodygt lt/soapEnvelopegt
SOAP Envelope
Header
Body
Message Pay Load
12SOAP 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.
13Sample SOAP
- ltSOAP-ENVEnvelope
- xmlnsSOAP-ENVhttp//schema.xmlsoap.org/soap/e
nvelope/ - xmlnsSOAP-ENChttp//schema.xmlsoap.org/soap/e
ncoding/ - SOAP-ENVencodingStylehttp//schema.xmlsoap.or
g/soap/encodinggt -
- ltSOAP-ENVBodygt
- ltgetHostname/gt
- lt/SOAP-ENVBodygt
- lt/SOAP-ENVEnvelopegt
- Invokes the getHostname operation on the Web
service.
14OGSA 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).
15WS-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.
16Before 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 ?resourceID123). - Could add extra information in SOAP headers, but
now no longer bound to one specific transport
protocol.
17Endpoint 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. - ltwsaEndpointReferencegt
- ltwsaAddressgtxsanyURIlt/wsaAddressgt (1..1)
- ltwsaReferenceParametersgtxsanylt/wsaReferencePar
ametersgt ? - ltwsaMetadatagtxsanylt/wsaMetadatagt?
- lt/wsaEndpointReferencegt
18EPRs 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. - ltsoapEnvelope ...gt
- ltsoapBodygt
- ltwidgetcreateWidgetResponsegt
- ltwidgetwidgetReferencegt
- ltwsaAddressgthttp//host/WidgetServicelt/
wsaAddressgt - ltwsaReferenceParametersgt
- ltwidgetresourceIDgt123lt/widgetresourc
eIDgt - lt/wsaReferenceParametersgt
- lt/widgetwidgetReferencegt
- lt/widgetcreateWidgetResponsegt
- lt/soapBodygt
- lt/soapEnvelopegt
19Message Addressing Properties
- To
- Target Web service's URI. Typically same as the
HTTP request's URL, but it is not required to be. - ltwsaTogt http//host/WidgetService
lt/wsaTogt - The To header should be the same value as the
ltwsaAddressgt 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). - ltwsaFromgt
- ltwsaAddressgt http//client/myClient
lt/wsaAddressgt - lt/wsaFromgt
20Message 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. - ltwsaReplyTogt
- ltwsaAddressgt http//client/myReceiver
lt/wsaAddressgt - lt/wsaReplyTogt
- FaultTo
- If the response to a message is a SOAP fault, the
fault should be sent to the EPR in the FaultTo
header. - ltwsaFaultTogt
- ltwsaAddressgt http//client/FaultCatcher
lt/wsaAddressgt - lt/wsaFaultTogt
21Message Addressing (cont. 2)
- MessageID
- The MessageID is a URI that uniquely identifies a
message. - ltwsaMessageIDgturnuuid12-34-56-78lt/wsaM
essageIDgt - Action
- The Action header is the in-envelope version of
the SOAP HTTP Action header. REQUIRED. - ltwsaActiongt http//host/widgetOp
lt/wsaActiongt - RelatesTo
- Typically used on response messages to indicate
that it is related to a previously-known message
and to define that relationship. - ltwsaRelatesTo RelationshipType"wsaResponse"gt
- urnuuid12-34-56-78
- lt/wsaRelatesTogt
22Constructing SOAP Messages
- ltwsaAddressgt value is copied into the ltwsaTogt
header block. - Reference parameters.
- Each element in ltwsaReferenceParametersgt
(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 wsaIsReferenceParameter
true.
23Anonymous 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.
24WS-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 - ltsoapEnvelope...gt
- ltsoapHeadergt
- ltwsaTogt http//host/WidgetService
lt/wsaTogt - ltwidgetresourceID wsaIsReferenceParameter
truegt - 123
- lt/widgetresourceIDgt
- lt/soapHeadergt
- ltsoapBodygt
- ...
- lt/soapBodygt
- lt/soapEnvelopegt
25Introduction - 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
26Web Services Resource Framework
- Stateful Resources
- Web 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.
27WSRF 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
28WSRF 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/CreditCardAc7
- 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
29Running Example
- Seat 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
- .
30Running 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 (firmn
holdm) - .
31Referencing
www.events.org/E6
11
reserve(3, hold)
www.events.org/E6
places 120 held 6 booked 8
Resource qualified End-point reference
(www.events.org/E6 X3)
create
firm0 hold3 seats K1, K2, K3 arrival nil
www.events.org/E6res X3
1
Change(Firm2, Hold0)
www.events.org/E6res
- Resource-qualified endpoint reference the
service address and specific resource identifier
part of WS-Addressing Standard. - If service has only one resource instance (11)
dont need to include resource identifier in
address.
32Multiply-serviced Resource
www.events.org/E6res X3
Change(Firm2, Hold0)
firm0 hold3 seats K1, K2, K3 arrival nil
www.events.org/E6res
- Get - SetArrival - Change
www.events.org/E6admin X3
clearHolds(1)
www.events.org/E6admin
- ClearHolds - ChangeSeats - Get
- Two end-point references
- www.events.org/E6res
- www.events.org/E6admin
- Each providing a different interface to the same
set of resource instances
33Operations on Resource Properties
- WS-ResourceProperties
- http//docs.oasis-open.org/wsrf/wsrf-ws_resource_p
roperties-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.
34GetResourceProperty
ltenvenvelope .namespace definitions
..gt ltenvHeadergt ltwsaActiongt http//...wsrf.../G
etResourceProperty lt/gt ltwsaTo
envmustUnderstand1gt www.events.org/E6res
lt/gt ltmResIdgtX7lt/gt lt/gt ltenvBodygt ltwsrpGetReso
urcePropertygttnsseat lt/gt lt/gtlt/gt
ltenvenvelope .namespace definitions
..gt ltenvHeadergt ltwsaActiongt http//...wsrf.../
GetResourcePropertyResponse lt/gt ltwsaTo
envmustUnderstand1gt www. requestor
lt/gt ltmResIdgtX7lt/gt lt/gt ltenvBodygt
ltwsrplGetResourcePropertyResponsegt ltseatgtK1lt/gt
ltseatgtK2lt/gt ltseatgtK3lt/gt lt/gtlt/gt
- Returns all elements with the specified element
name
35Get Multiple Resource Properties
ltenvenvelope .namespace definitions
..gt ltenvHeadergt ltwsaActiongt http//...wsrf.../G
etMultipleResourceProperties lt/gt ltwsaTo
envmustUnderstand1gt www.events.org/E6res
lt/gt ltmResIdgtX7lt/gt lt/gt ltenvBodygt ltwsrpGetMult
ipleResourcePropertiesgt ltwsrpResourcePropertygt
tnsfirm lt/gt ltwsrpResourcePropertygttnsseat
lt/gtlt/gtlt/gt
ltenvenvelope .namespace definitions
..gt ltenvHeadergt ltwsaActiongt http//...wsrf.../
GetResourcePropertyResponse lt/gt ltwsaTo
envmustUnderstand1gt www. requestor
lt/gt ltmResIdgtX7lt/gt lt/gt ltenvBodygt
ltwsrplGetResourcePropertyResponsegt
ltfirmgt3lt/gt ltseatgtK1lt/gt ltseatgtK2lt/gt ltseatgtK3lt/gt
lt/gtlt/gt
- Must specify at least one
- Order in response should follow order in request
36SetResourceProperties
ltenvenvelope .namespace definitions
..gt ltenvHeadergt ltwsaActiongt http//...wsrf.../S
etResourceProperties lt/gt ltwsaTo
envmustUnderstand1gt www.events.org/E6res.lt/gt
ltmResIdgtX7lt/gt lt/gt ltenvBodygt
ltwsrpSetResourcePropertiesgt ltwsrpUpdategtlttnsho
ldgt0lt/gt lttnsfirmgt4lt/gtlt/gt ltwsrpDelete
resourcePropertytnsarrivalgt ltwsrpInsertgt
gtlttnsseatgtJ9lt/gt lt/gtlt/gtlt/gt
ltenvenvelopegt .ltenvBodygt ltwsrplGetResourceP
ropertyResponsegtlt/gtlt/gtlt/gt
- 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
37SetResourceProperties
firm0 hold3 seats K1, K2, K3 arrival 150000
firm4 hold0 seats K1, K2, K3, J9
ltwsrpUpdategtlttnsholdgt0lt/gt
lttnsfirmgt4lt/gtlt/gt ltwsrpDelete
resourcePropertytnsarrivalgt ltwsrpInsertgt
gtlttnsseatgtJ9lt/gt lt/gtlt/gtlt/gt
RNo X3
- Faults
- ResourceUnknownFault
- InvalidResourcePropertiesRequestContent
- The result would be a properties document which
is invalid, e.g. too many seats if maxoccurrs3 - 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
38Introduction - 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
39WS-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.
40Immediate Destruction
- Destroy
- lts11Envelope . . .gt
- lts11Headergt
- . . .
- ltwsaActiongt
- http//docs.oasis-open.org/wsrf/rlw-1/ImmediateRes
ourceTermination/DestroyRequest - lt/wsaActiongt
- . . .
- lt/s11Headergt
- lts11Bodygt
- ltwsrf-rlDestroy/gt
- lt/s11Bodygt
- lt/s11Envelopegt
41Scheduled Destruction
- SetTerminationTime
- RequestedTerminationTime
- RequestedLifetimeDuration
- Querying Current Time
- Clock synchronization between the service
requestor and the service provider. - Resource properties
- ltwsrf-rlCurrentTimegt
- ltwsrf-rlTerminationTimegt
42Termination 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.
43Resource 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.
44Introduction - 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
45WS-Notification
- WS BaseNotification
- WS Topics
- WS BrokeredNotification
46Notification
- 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)
travel
webServices
USA
EU
WSRF
WSDL
47Notification 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
48Destruction Notification Pattern
www.events.org/E6
places 120 held 6 booked 8
reserve(3, firm)
(www.events.org/E6 X3)
firm3 hold0
www.events.org/E6res
www.events.org/E6res X3
Subscribe(topicResourceTermination)
EventCancelled
Notify(Event Cancelled, dateTime)
www.events.org/E6res X3
- WS-Notification standard deals with this
- Subscribe to the resource
- Resource notifies subscriber
49Destruction 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 nameResourceTermination
- The notification message must include the
following element
ltwsrlTerminationNotificatongt
ltwsrlTerminationTimegt xsddateTime lt/gt
ltwsrlTerminationReasongt xsdany lt/gt?lt/gt
50Value 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
ltwsrpResourcePropertyValueChangeNotificationgt ltw
srpOldValuegt ltseatgtK1lt/gt ltseatgtK2lt/gt
ltseatgtK3lt/gtlt/gt ltwsrpNewValuegt ltseatgtK1lt/gt
ltseatgtK2lt/gt ltseatgtJ4lt/gtlt/gtlt/gt
- 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!!!
51Introduction - 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
52WS-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.
53Base Fault Type
- Base fault has the following syntax
- ltBaseFaultgt
- ltTimestampgtxsddateTimelt/Timestampgt
- ltOriginatorReferencegt
- wsaEndpointReferenceType
- lt/OriginatorReferencegt ?
- ltErrorCode dialect"anyURI"gt
- xsdanyType
- lt/ErrorCodegt ?
- ltDescriptiongtxsdstringlt/Descriptiongt
- ltFaultCausegtanylt/FaultCausegt ?
- any
- lt/BaseFaultgt
54Introduction - 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
55What 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.
56What 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.
57Structure
ltimportgt incorporate external definitions
lttypesgt logic structure of data being transmitted
?
ltschemagt
ltTYPEgt
Abstract
ltmessagegt transmittable messages
ltpartgt
ltportTypegt interface operations and assoc.
messages
ltoperationgt
ltMESSAGETYPEgt
Physical
ltbindinggt how messages will be transmitted
ltservicegt how a service is accessed
ltportgt web-address ref
58Contents 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 Typean 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.
59Services 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
60Services Structure Example
Message Mess1 .
Schema .
PortTypeCustomer Op PurchOrder Op Inv
Op PayAdv Op GetStmt Op Overdue
PortTypeGeneral Op GenInfo Op OpenAcc
Binding Service Location www. /WS-RPC
Binding Service Location www. /WS-RPC
Binding Service Location www. /WS-EM
Binding Service Location www. /WS-EM
www/CustRPC
www/GenRPC
www/GenEM
www/CustEM
61Services Structure Example
Four message patterns ? IN One-way ?
OUT Notify ?? IN then OUT Request/Response
?? OUT then IN Solicit/Response
Reversed roles Provider proactive
client Consumer reactive server
Message Mess1 .
Schema .
PortTypeCustomer Op PurchOrder ?? Op Inv
? Op PayAdv ? Op GetStmt ?? Op Overdue ??
PortTypeGeneral Op GenInfo ?? Op OpenAcc ??
Binding Service Location www. /WS-RPC
Binding Service Location www. /WS-RPC
Binding Service Location www. /WS-RPC
Binding Service Location www. /WS-RPC
www/CustRPC
www/GenRPC
www/GenEM
www/GenEM
62Request - Response
- 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
ltwsdlportType nameCustomerPortgt
ltwsdloperation namePurchOrdergt
ltwsdlinput namePurchOrderRequest
messagePOinMgt ltwsdloutput
namePurchOrderResponse messageDeliveryScheduleMgt
ltwsdlfault namePurchOrderDuffAccFM
messageDuffAccFMgt .. lt/gt
ltwsdloperation gt lt/gt lt/gt
ltwsdlmessage namePOinMgt ltpart
nameaccInfo typemaccInfoTgt ltpart
nameorder elementmaccInfoTgt lt/gt
Default message name operation
request/response
63Solicit - 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
ltwsdlportType nameCustomerPortgt
ltwsdloperation nameOverduegt
ltwsdloutput nameOverdueSolicit
messageOverdueOutMgt ltwsdlinput
nameOverdueResponse messageExcuseInMgt
ltwsdlfault nameOverdueThreatOutFM
messageThreatOutFMgt .. lt/gt
ltwsdloperation gt lt/gt lt/gt
Opposite order!
Default message name operation
solicit/response
64Single 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
ltwsdlportType nameCustomerPortgt ..
ltwsdloperation nameInvgt
ltwsdloutput nameInv messageInvoiceOutMgt lt/gt
ltwsdloperation namePayAdvgt
ltwsdlinput namePayAdv messagePaymentAdviceInMgt
lt/gt lt/gt
Default message name operation
Cant have fault message
65Binding - 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
Message Mess
Schema
PortTypeGeneral Op GenInfo ?? .
PortTypeCustomer Op PurchOrder ?? .
Binding Service Location
Binding Service Location
Binding Service Location
Binding Service Location
www/CustRPC
www/GenRPC
www/GenEM
www/GenEM
66Binding 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
67RPC vs Document
ltwsdlmessage namePOinMgt ltpart
nameaccInfo typegt ltpart nameorder
elementgt lt/gt
ltwsdlmessage namePOoutMgt ltpart
nameResult typegt ltpart namedelivSched
typegt lt/gt
ltwsdloperation namePurchOrdergt
ltwsdlinput namePurchOrderRequest
messagePOinMgt ltwsdloutput
namePurchOrderResponse messagePOoutMgt .. lt/gt
RPC Actual messages
ltenvBodygt ltmPurchOrderRequestgt
ltaccInfogt lt/gt ltordergt lt/gtlt/gtlt/gt
ltenvBodygt ltmPurchOrderResponsegt
ltResultgt lt/gt ltdelivSchedgt lt/gtlt/gtlt/gt
ltenvBodygt ltaccInfogt lt/gt ltordergt
lt/gtlt/gtlt/gt
Document Actual messages
ltenvBodygt ltResultgt lt/gt ltdelivSchedgt
lt/gtlt/gtlt/gt
68Introduction - 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
69Naming
- Naming definitions
- Requirements on names
- Existing naming schemes
- Overview of the Handle syntax
- NextGRID Experiment in WP1
- Summary
70Naming 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)
71Requirements on names
- Names 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.
72Existing 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.
urnnextgridwp1usecasewp320050427FinancialSce
nario - 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. URNLSIDrcsb.orgPDB1D4X22. - Extensible Resource Identifier (XRI) - built
directly on top of URI IRI specifications.
Examples - xri//_at_example.orgagencydepartment/!(urnISBN0-
395-36341-1) - xri//_at_!9990!A58F!1C3D/!(urnISBN0-395-36341-1)
73Existing 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.
74Overview 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
- ltHandlegt ltHandle Naming Authoritygt "/"
ltHandle Local Namegt - 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/
75NextGRID Experiment in WP1
- NextGRID project Naming Authority Handle
- 0.NA/2131
- Also have sub-prefixes for workpackages.
- 0.NA/2131/WP1
Handle System Proxy Server
http//hdl.handle.net/ webpage
Resolve name. (Read-only)
NextGRID BSCW Server
Naming webpage
Create, delete, modify list names.
Other NextGRID Server
Interfaces ?? Security model ??
Other NextGRID Service
Create, delete, modify list names.
76The 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
Questions?