NextGRID: Presentation on Topic


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • The key aspects of the Minimal Grid Infrastructure are the following: Communication – protocols and languages through which NextGRID communicates. Behaviour – interfaces implemented by all NextGRID entities. Services – those services that are always available to users and other services. Models – underpinning models of NextGRID. The OGSA WSRF Basic Profile 1.0 provides a widely accepted set of minimal specifications that have been found to enable interoperability. The specifications considered in the OGSA Base Profile primarily address Lifecycle Management, Producer/Consumer Notification, and State access based on WSRF.
  • Presentation of SOA is Fraught Very many small pieces The interactions are not (statically) defined Encapsulation rather than layering
  • Messages can be synchronous or asynchronous. This system is loosely coupled (i.e. Services should not be dependent on each other). But not the “Object Orientated Architecture”.
  • SOAP = message format HTTP = transport protocol TCP/IP = network protocol The SOAP envelope is analogous to a business letter with an address within a distant organisation. This gives the information needed to get it from the sender’s building to the recipient’s building. The transport protocol is analogous to the carrier used for transport between buildings. (e.g. FedEx.) The web server and container act like the local services for the recipient which place the message in his/her pigeon-hole.
  • Simple Object Access Protocol? Or Service Orientated Access Protocol? “ Originally the acronym stood for Simple Object Access Protocol, but that name is now considered to be outdated, so it no longer stands for anything ” [OGSA Glossary] Before SOAP came XML-RPC. XML-RPC is a web services protocol that implements remote procedure calls over HTTP. XML-RPC a uses simple XML application to express function calls (requests) and returned values (responses) between clients and servers.
  • Web Services Addressing 1.0 - Core W3C Candidate Recommendation 17 August 2005
  • SOAP does not provide a standard way to specify where a message is going, how to return a response, or where to report an error. Those details have historically been left up to the transport layer. For example, when a standard SOAP request is sent over HTTP, the URI of the HTTP request serves as the message's destination. The message response is packaged in the HTTP response and received by the client over the HTTP connection. When a SOAP request message is sent asynchronously through JMS, a destination for responses might be specified in the JMS message headers, incorporated into the message body, or left up to the service implementation. Addressing at the transport level is sufficient for many existing services, but it has been a limiting factor in the development of others. WS-Addressing defines standard ways to route a message over multiple transports or direct a response to a third party. For example, a client application might send a request over JMS and ask to receive the response through e-mail or SMS.
  • /wsa:EndpointReference This represents some element of type wsa:EndpointReferenceType. This example uses the predefined <wsa:EndpointReference> element, but any element of type wsa:EndpointReferenceType may be used. /wsa:EndpointReference/wsa:ReferenceParameters This OPTIONAL element may contain elements from any namespace. Such elements form the [reference parameters] of the reference. /wsa:EndpointReference/wsa:Metadata This OPTIONAL element may contain elements from any namespace. Such elements form the metadata that is relevant to the interaction with the endpoint.
  • NB: “widgetReference” is of type wsa:EndpointReferenceType. It doesn’t have to be called the predefined <wsa:EndpointReference>.
  • From - If the message's receiver needs to send a message back to the endpoint that sent the message, then it should use this EPR. Note that there's also a ReplyTo header, which indicates to where the response message should go. The working group is considering removing the wsa:From element due to lack of use-cases and seeks feedback on this decision.
  • Since the reference parameter mechanism does not restrict the content of the generated headers, EPR suppliers should exercise appropriate caution to ensure their reference parameters do not cause unintended or erroneous semantics in the resultant SOAP message. For example, using a reference parameter to send a WS-Security header would be ill-advised (since other parts of the SOAP infrastructure will often control this header, and there must be at most one of them per message). Note: Integrity validation of [reference parameters] needs to take into account the addition of wsa:IsReferenceParameter attributes and the corresponding introduction of the WS-Addressing namespace to the [in-scope namespaces]
  • If shopping basket were carried forward from session, this would be persistent state. Stateless – implements message exchanges for which there is no access or use of information not contained in the input message. E.g. document compression / de-compression Out-of-band persistent state – response is affected by information that changes by some non-WS means. E.g. weather forecast service Transient State ( conversational ) – to co-ordinate a collection of related message exchanges E.g. : shopping-basket; Booking holiday - book hotel, flights and car-hire via different services with two-phase commit – confirm a reservation when all are held. Proposed standards for this – WS-TransactionFramework Persistent state ( stateful resource ) – one message exchange produces a long-lived change in state which affects other message exchanges if shopping basket were carried forward from session, this would be persistent state Combination – Booking holiday is conversational involving several persistent state services WSRF is for Persistent State, not Conversational
  • A resource has a resource properties document Gives values for those aspects of the resource’s state which can be retrieved and possibly modified by service consumer through a Web Services interface That document has a type Fixed for all instances of the resource type Defined by a Schema Each resource property is a global element within that schema The properties document as a whole is a global element with all the resource properties as children (not attributes) The actual order is immaterial
  • The declaration of the WS Resource’s properties represents a projection of or a view on the WS-Resource’s state. This projection is defined in terms of a resource properties document. This resource properties document serves to define a basis for access to the resource properties through Web service interfaces. A WS-Resource is the composition of a resource and a Web service through which the resource can be accessed. A WS-Resource is further defined as follows: • A reference to a WS-Resource is represented by an endpoint reference (EPR), or more precisely an XML element whose type is, or is derived (by extension), from the complexType named EndpointReferenceType defined by the [WS-Addressing] specification. Such EPRs MUST reference exactly one WS-Resource. • The set of properties of the resource MUST be expressed using an XML Infoset described by XML schema. The WS-Resource MUST support accessing resource properties through message exchanges defined by the WS-Resource Properties specification [WS-ResourceProperties]. • A WS-Resource MAY support the message exchanges defined by the WS-Resource Lifetime specification [WS-ResourceLifetime]. For a given WS-Resource there may be many references. The way two references are compared for equality is implementation-specific and not defined by this specification.
  • A resource identifier is Managed by the associated service(s) Unique within each associated service Service-name :: resource-id is universally unique Service-name :: resource-id can be passed around and is guaranteed to identify that resource whoever uses it Opaque No-one other than an associated service should attempt to interpret it or de-compose it – no semantics outside an associated service Can’t even compare two to see if they identify the same resource Identity of a resource is some non-opaque identifier E.g. a person’s e-mail address; an ISBN Allows resources in independent services to be X-referred Not covered by the WSRF standards Would be a property of the resource Would be namespace scoped ISBN:123-64-27694 ISBN =
  • Red is mandated by the standard; bold is significant information Returns all elements with the specified element name Faults – ResourceUnknownFault – X7 does not exist InvalidResourcePropertyQName – tns:seat is not a property … (allowed read access is an authorisation issue, not a WSRF issue ???)
  • The receipt of the DestroyResponse message serves as a confirmation of the destruction of the WS-Resource.
  • If a WS-Resource accepts the request to set the WS-Resource’s termination time, it MUST 382 update the TerminationTime resource property of the WS-Resource to the value specified in the 383 message or to a value “in the future” relative to the requested time. If the SetTerminationTime 384 request message is accepted, the WS-Resource MUST respond with the following message: 385 <wsrf-rl:SetTerminationTimeResponse> 386 <wsrf-rl:NewTerminationTime xsi:nil=”xsd:boolean”?> 387 xsd:dateTime 388 </wsrf-rl:NewTerminationTime> 389 <wsrf-rl:CurrentTime> 390 xsd:dateTime 391 </wsrf-rl:CurrentTime> 392 <wsrf-rl:SetTerminationTimeResponse>
  • The requestor MUST NOT depend on the destruction of the WS-Resource occurring at termination time expiration but SHOULD assume that the WS-Resource is no longer accessible after termination time has expired.
  • SubscriptionManager Renew, Create, Pause, Resume
  • Doesn’t allow multiple !!! – an oversight
  • Red = required Timestamp = time at which the error occurred. /wsrf-bf:BaseFault/ErrorCode This OPTIONAL element provides convenient support for legacy fault reporting systems (e.g., POSIX errno). The dialect attribute on ErrorCode MUST be a URI that defines the context in which the ErrorCode MUST be interpreted.
  • TYPE and MESSAGETTPE are not actual components START FROM Middle – PortTYPE – the central notion – then message; then type Finally service
  • One service location for all RPC services One service location for all e-mail services Published WSDLs for the four service views:
  • In and Out relative to the service.
  • Why is transport optional? The style attribute indicates whether the operation is RPC-oriented (messages containing parameters and return values) or document-oriented (message containing document(s)). This information may be used to select an appropriate programming model. The value of this attribute also affects the way in which the Body of the SOAP message is constructed, as explained in Section 3.5 below. If the attribute is not specified, it defaults to the value specified in the soap:binding element. If the soap:binding element does not specify a style, it is assumed to be "document". RPC Hint that this is best dealt with as a procedure call (/return) Message parts are parameters which are wrapped as one component of Body As in the SOAP RPC standard Document This is a document to be processed – message parts are directly in body Wrapped convention – single message part – looks like RPC style <soap:binding ..> says SOAP structure – envelope, header body style – how message parts are mapped into the body Can: specify it for each operation, provide a default for all operations If not specified at all, default is “document” transport – a SOAP transport binding, e.g. soapAction – only for SOAP HTTP binding and there mandatory – specifies the value for the SOAPAction header (at HTTP level) e.g. for document style this is what says what “operation”
  • The soap:body binding element provides information on how to assemble the different message parts inside the Body element of the SOAP message. The soap:body element is used in both RPC-oriented and document-oriented messages, but the style of the enclosing operation has important effects on how the Body section is structured: If the operation style is rpc each part is a parameter or a return value and appears inside a wrapper element within the body (following Section 7.1 of the SOAP specification). The wrapper element is named identically to the operation name and its namespace is the value of the namespace attribute. Each message part (parameter) appears under the wrapper, represented by an accessor named identically to the corresponding parameter of the call. Parts are arranged in the same order as the parameters of the call. If the operation style is document there are no additional wrappers, and the message parts appear directly under the SOAP Body element. The same mechanisms are used to define the content of the Body and parameter accessor elements. Allows a lot of flexibility --> complexity. Mostly will be simple!!
  • The OGSA work on naming recognises three levels of name; human-oriented names such as paths or attributes are mapped to abstract names, which are then mapped to some form of address. In fact, nearly all abstract names are easily read and interpreted by humans, but not always very user-friendly. So perhaps a better definition of a human-oriented name is one that is short, user-friendly and easy to generate by a human (rather than by a machine, as in the case of UUIDs for example).
  • Additional Desirable Properties Persistent – the name may need to reference an object well beyond the lifetime of the object it identifies or of any naming authority involved in the assignment of its name. Compact and fast to allocate. Fast to resolve and efficient - if the scheme is too slow, it will not be used. Provide legacy support - the scheme should permit the support of existing legacy naming systems. Extensible - must permit future extensions to the scheme. Comparable - it should be possible to determine equality of two different names. Internationalisable – names should be language independent. A naming scheme that is not practical to use and does not include these desirable properties is less likely to gain widespread use, and not being widely adopted diminishes the usefulness of a naming scheme. Certain names should also be human readable and ideally self-describing, whilst others may need to be cheap to allocate.
  • It is usual to represent UUIDs with hexadecimal digits with a hyphen separating the different fields within the 16-octet UUID. Can provide a guarantee of uniqueness across space and time. IRI (Internationalized Resource Identifier) - specifications from W3C. URIs introduced a standard means of identifying resources across distributed networks that in only 15 years has become the most successful identifier scheme in history. IRIs subsequently extended the generic URI scheme, which supports only the ASCII character set, to include the full UCS (Unicode Character Set). XRIs take a third step by adding additional syntax and resolution features that enable XRIs to solve problems of abstract identification that are not easily addressed by conventional URI or IRI syntax or resolution. One of these problems—persistence—has been addressed by other URI schemes for abstract identifiers, such as the URN scheme. XRIs also go on to address a much wider range of issues in abstract identification.
  • Naming Schemes – 3 categories: 1. Ways to construct a name. 2. Specs for moving / transmitting names between services. 3. Mechanisms for storing and retrieving (resolving) names. RNS addresses the need to access resources within a grid environment by way of a universal name that ultimately resolves to a meaningful address.
  • A pure name service, such as the Handle System, can be designed solely around efficient resolution of known items without addressing functions and data structures required for discovery of unknown items based on incomplete criteria. Every handle consists of two parts: its naming authority, otherwise known as its prefix, and a unique local name under the naming authority, otherwise known as its suffix . A handle has a set of values assigned to it and may be thought of as a record that consists of a group of fields. Each handle value must have a data type specified in its <type> field, that defines the syntax and semantics of its data, and a unique <index> value that distinguishes it from the other values of the set. A set of handle data types has been pre-defined for administrative use.
  • Filenames for dialectics, experiment reports etc. <type>_<originatingWP>_<yyyymmdd>_<unique-addition-and-description> Handle name: 2131.wp1/urn:nextgrid.wp1:<type>:<originatingWP>:<yyyymmdd>:<dname> 2131.wp1/urn:nextgrid:wp1:usecase:wp3:20050427:FinancialScenario
  • NextGRID: Presentation on Topic

    1. 1. Minimal Infrastructure: SOA, WS-Addressing, WSRF, WSDL & Naming Stephen Davey, NeSC <ul><ul><li>1st NextGRID Training Course </li></ul></ul><ul><ul><li>National e-Science Centre (NeSC), Edinburgh, 7 th March 2006 </li></ul></ul>
    2. 2. Contributors & Acknowledgments <ul><li>This presentation is based on work by </li></ul><ul><ul><li>Richard Hopkins, “Web Services Resource Framework - WSRF.” </li></ul></ul><ul><ul><li>With additional information from </li></ul></ul><ul><ul><li>“ The Joy of Web Services”. Author: M. McKeown. </li></ul></ul><ul><ul><li>“ Foundation Grid Services using WSRF and OGSA base profile.” Author: D. Snelling. </li></ul></ul><ul><ul><li>“ Web Services, WSRF and GT4”. Author: M. Mineter. </li></ul></ul><ul><li>These slides have been compiled / edited by </li></ul><ul><ul><li>Stephen Davey </li></ul></ul>
    3. 3. Introduction - Aim & Scope <ul><li>These slides intend to cover the following: </li></ul><ul><li>NextGRID Minimal Infrastructure </li></ul><ul><ul><li>Service-Oriented Architecture </li></ul></ul><ul><ul><li>OGSA WSRF Base Profile 1.0 </li></ul></ul><ul><ul><li>WSDL 1.1 </li></ul></ul><ul><ul><li>Naming </li></ul></ul><ul><li>They are at an Introductory level, aimed at people with some knowledge in this area. </li></ul>
    4. 4. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    5. 5. What is a Service-Oriented Architecture? <ul><li>Service-Oriented Architecture (SOA) </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Service </li></ul><ul><ul><li>A software component participating in a service-oriented architecture that provides functionality and/or participates in realizing one or more capabilities . </li></ul></ul><ul><li>[OGSA Glossary v1.0] </li></ul>
    6. 6. What is a Service? <ul><li>In computing terms, a ‘service’ is simply a function that can be invoked via a well-defined remote interface. </li></ul><ul><li>[OGSI primer] </li></ul><ul><li>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. </li></ul><ul><li>[W3C – Web Services Architecture] </li></ul>
    7. 7. Benefits of Web Services & SOA <ul><li>Benefits </li></ul><ul><ul><li>Allows us to hide the details of how a service is implemented; only URL and data types are required </li></ul></ul><ul><ul><li>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 </li></ul></ul><ul><li>Key Service Oriented Principles </li></ul><ul><ul><li>Composable </li></ul></ul><ul><ul><li>Simple parts </li></ul></ul><ul><ul><li>Intended for distributed systems </li></ul></ul><ul><ul><li>Acknowledgement of boundaries </li></ul></ul>
    8. 8. SOA Triangle Service Registry Service Requestor Service Provider Find (Discover) Publish Bind (Interact) Service Description
    9. 9. Web services stack Application rpcrouter SOAP HTTP TCP/IP Infrastructure (Data link) Application (servlet) Web server SOAP HTTP TCP/IP Infrastructure (Data link)
    10. 10. SOAP <ul><li>“ SOAP provides a simple lightweight mechanism for exchanging structured and typed information between peers in a decentralized, distributed environment using XML” [Microsoft] </li></ul>
    11. 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
    12. 12. SOAP Structure <ul><li>Envelope – contains the entire SOAP message. </li></ul><ul><li>Header – (optional) contains header information. </li></ul><ul><li>Body – contains the application pay load. </li></ul><ul><li>Message Payload – the part of the message that is intended for the application. </li></ul>
    13. 13. Sample SOAP <ul><li>< SOAP-ENV:Envelope </li></ul><ul><li>xmlns:SOAP-ENV=“” </li></ul><ul><li>xmlns:SOAP-ENC=“” </li></ul><ul><li>SOAP-ENV:encodingStyle=“”> </li></ul><ul><li>< SOAP-ENV:Body > </li></ul><ul><li>< getHostname /> </li></ul><ul><li></ SOAP-ENV:Body > </li></ul><ul><li></ SOAP-ENV:Envelope > </li></ul><ul><li>Invokes the “getHostname” operation on the Web service. </li></ul>
    14. 14. OGSA WSRF Base Profile 1.0 <ul><li>Key parts mandated in the profile: </li></ul><ul><ul><li>Addressing: </li></ul></ul><ul><ul><ul><li>WS-Addressing endpoint references and places some constraints on their structure, thus enabling interoperable addressing. </li></ul></ul></ul><ul><ul><li>Resource Properties: </li></ul></ul><ul><ul><ul><li>resource must support certain resource properties, </li></ul></ul></ul><ul><ul><ul><li>support for certain operations that are optional in the WS-ResourceProperties specifications. </li></ul></ul></ul><ul><ul><li>Resource Lifetime: </li></ul></ul><ul><ul><ul><li>ImmediateResourceTermination portType, and </li></ul></ul></ul><ul><ul><ul><li>ScheduledResourceTermination portType (and their associated operations and properties). </li></ul></ul></ul><ul><ul><li>Base Notification: </li></ul></ul><ul><ul><ul><li>NotificationProducer portType (and its associated operations and properties to provide notification using a publish/subscribe pattern). </li></ul></ul></ul><ul><ul><li>Base Faults: </li></ul></ul><ul><ul><ul><li>WS-BaseFaults (and extends the fault structure). </li></ul></ul></ul>
    15. 15. WS-Addressing <ul><li>Before WS-Addressing </li></ul><ul><li>WS-Addressing specification </li></ul><ul><ul><li>Endpoint References </li></ul></ul><ul><ul><ul><li>EPRs and SOAP </li></ul></ul></ul><ul><ul><li>Message Addressing Properties (headers) </li></ul></ul><ul><ul><ul><li>To, From, ReplyTo, FaultTo, Action, MessageID, RelatesTo. </li></ul></ul></ul><ul><ul><ul><li>Reference parameters. </li></ul></ul></ul><ul><ul><ul><li>Anonymous & None URI s. </li></ul></ul></ul>
    16. 16. Before WS-Addressing <ul><li>To locate a web service had to ask for the URL of the endpoint or the WSDL . </li></ul><ul><li>Plus might need to identify the web services instance. </li></ul><ul><ul><li>Could use a URL with a session identifier (e.g. appending ?resourceID=123). </li></ul></ul><ul><ul><li>Could add extra information in SOAP headers, but now no longer bound to one specific transport protocol. </li></ul></ul>
    17. 17. Endpoint References (EPRs) <ul><li>Web service endpoint is a entity to which Web service messages can be addressed. </li></ul><ul><li>Endpoint references convey the information needed to address a Web service endpoint. </li></ul><ul><li>EPR is basically a URL wrapped by some XML elements. </li></ul><ul><li><wsa:EndpointReference> </li></ul><ul><ul><li><wsa:Address> xs:anyURI </wsa:Address> (1..1) </li></ul></ul><ul><ul><li><wsa:ReferenceParameters> xs:any *</wsa:ReferenceParameters> ? </li></ul></ul><ul><ul><li><wsa:Metadata> xs:any *</wsa:Metadata>? </li></ul></ul><ul><li></wsa:EndpointReference> </li></ul>
    18. 18. EPRs and SOAP <ul><li>How does a Service return a reference to a new entity? </li></ul><ul><ul><li>Does so by returning an EPR: </li></ul></ul><ul><li>E.g. An EPR with an added ReferenceParameters element. </li></ul><ul><li><soap:Envelope ...> </li></ul><ul><li><soap:Body> </li></ul><ul><li><widget:createWidgetResponse> </li></ul><ul><li><widget:widgetReference> </li></ul><ul><li><wsa:Address>http://host/WidgetService</wsa:Address> </li></ul><ul><li><wsa:Reference Parameters > </li></ul><ul><li><widget:resourceID>123</widget:resourceID> </li></ul><ul><li></wsa:Reference Parameters > </li></ul><ul><li></widget:widgetReference> </li></ul><ul><li></widget:createWidgetResponse> </li></ul><ul><li></soap:Body> </li></ul><ul><li></soap:Envelope> </li></ul>
    19. 19. Message Addressing Properties <ul><li>To </li></ul><ul><li>Target Web service's URI. Typically same as the HTTP request's URL, but it is not required to be. </li></ul><ul><li><wsa:To> http://host/WidgetService </wsa:To> </li></ul><ul><li>The To header should be the same value as the <wsa:Address> element when using an EPR. </li></ul><ul><li>From </li></ul><ul><li>EPR of the message's (source) sender. </li></ul><ul><ul><li>Used in cases where an acknowledgement needs to be sent back to the sender (WS-ReliableMessage). </li></ul></ul><ul><li><wsa:From> </li></ul><ul><li><wsa:Address> http://client/myClient </wsa:Address> </li></ul><ul><li></wsa:From> </li></ul>
    20. 20. Message Addressing (cont.) <ul><li>ReplyTo </li></ul><ul><li>Any response from the Web service should be sent to the ReplyTo EPR. </li></ul><ul><ul><li>From and ReplyTo can be two distinct EPRs, the message's sender might not be the endpoint that is meant to receive the response. </li></ul></ul><ul><li><wsa:ReplyTo> </li></ul><ul><li><wsa:Address> http://client/myReceiver </wsa:Address> </li></ul><ul><li></wsa:ReplyTo> </li></ul><ul><li>FaultTo </li></ul><ul><li>If the response to a message is a SOAP fault, the fault should be sent to the EPR in the FaultTo header. </li></ul><ul><li><wsa:FaultTo> </li></ul><ul><li><wsa:Address> http://client/FaultCatcher </wsa:Address> </li></ul><ul><li></wsa:FaultTo> </li></ul>
    21. 21. Message Addressing (cont. 2) <ul><li>MessageID </li></ul><ul><li>The MessageID is a URI that uniquely identifies a message. </li></ul><ul><li><wsa:MessageID>urn:uuid:12-34-56-78</wsa:MessageID> </li></ul><ul><li>Action </li></ul><ul><li>The Action header is the in-envelope version of the SOAP HTTP Action header. REQUIRED . </li></ul><ul><li><wsa:Action> http://host/widgetOp </wsa:Action> </li></ul><ul><li>RelatesTo </li></ul><ul><li>Typically used on response messages to indicate that it is related to a previously-known message and to define that relationship. </li></ul><ul><ul><li><wsa:RelatesTo RelationshipType=&quot;wsa:Response&quot;> </li></ul></ul><ul><ul><li>urn:uuid:12-34-56-78 </li></ul></ul><ul><ul><li></wsa:RelatesTo> </li></ul></ul>
    22. 22. Constructing SOAP Messages <ul><li><wsa:Address> value is copied into the <wsa:To> header block. </li></ul><ul><li>Reference parameters. </li></ul><ul><ul><li>Each element in <wsa:ReferenceParameters> (including all of that elements children, attributes and namespaces) is copied literally as header blocks in the SOAP message. </li></ul></ul><ul><ul><li>Each header block added as a result of the above rule is annotated with wsa:IsReferenceParameter = ‘true’. </li></ul></ul>
    23. 23. Anonymous & None URI s <ul><li> </li></ul><ul><li>In all of the headers can use a special anonymous URI. </li></ul><ul><li>When you use this URI, you are indicating that there is no real endpoint available for this address. </li></ul><ul><li> </li></ul><ul><li>Messages sent to EPRs whose address is this value MUST be discarded. </li></ul><ul><li>Typically used to designate that no reply or fault message should be sent. </li></ul>
    24. 24. WS-Addressing <ul><li>WS-Addressing specification – </li></ul><ul><ul><li>requires the Address element, </li></ul></ul><ul><ul><li>but resourceID is specific to the WidgetService. </li></ul></ul><ul><li>SOAP envelope of future requests to this EPR would take the form: </li></ul><ul><ul><li><soap:Envelope...> </li></ul></ul><ul><ul><li><soap:Header> </li></ul></ul><ul><ul><li><wsa:To> http://host/WidgetService </wsa:To> </li></ul></ul><ul><ul><li><widget:resourceID wsa:IsReferenceParameter=true > </li></ul></ul><ul><ul><li> 123 </li></ul></ul><ul><ul><li></widget:resourceID> </li></ul></ul><ul><ul><li></soap:Header> </li></ul></ul><ul><ul><li><soap:Body> </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><ul><li></soap:Body> </li></ul></ul><ul><ul><li></soap:Envelope> </li></ul></ul>
    25. 25. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    26. 26. Web Services Resource Framework <ul><li>Stateful Resources </li></ul><ul><ul><li>Web service itself (front end) is stateless. </li></ul></ul><ul><ul><li>Maintains state in a back-end. </li></ul></ul><ul><ul><li>Service request identifies the specific resource. </li></ul></ul><ul><li>WSRF is for Persistent State (stateful resource) </li></ul><ul><ul><li>One message exchange produces a long-lived change in state which affects other message exchanges. </li></ul></ul>
    27. 27. WSRF Architecture <ul><li>A stateful (WS) resource </li></ul><ul><ul><li>Is a repository for persistent state </li></ul></ul><ul><ul><ul><li>Like an object in an object-oriented architecture. </li></ul></ul></ul><ul><ul><li>Has state that comprises a set of state data </li></ul></ul><ul><ul><ul><li>Each item of state data is a resource property. </li></ul></ul></ul><ul><ul><ul><li>A resource property is expressible as an XML document, which can in principle be retrieved and updated. </li></ul></ul></ul><ul><ul><li>E.g. Bank Account has properties: </li></ul></ul><ul><ul><ul><li>Balance owed, Credit limit, Latest statement, … </li></ul></ul></ul><ul><li>Differences from Object-Oriented Architecture </li></ul><ul><ul><li>O-O object has just one interface, and is defined by the operations on it. </li></ul></ul><ul><ul><li>The type of a WS-resource is </li></ul></ul><ul><ul><ul><li>The type of its resource properties document </li></ul></ul></ul><ul><ul><ul><li>Not the signatures of its operations </li></ul></ul></ul>
    28. 28. WSRF Architecture <ul><li>A stateful (WS) resource </li></ul><ul><ul><li>… . </li></ul></ul><ul><ul><li>Has a well-defined life-cycle – creation and destruction </li></ul></ul><ul><ul><ul><li>Destruction can be explicit or scheduled </li></ul></ul></ul><ul><ul><li>Can be known and acted upon by one or more Web Services </li></ul></ul><ul><ul><ul><li>Has a globally unique identifier – </li></ul></ul></ul><ul><ul><ul><ul><li> </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Can be passed between services to identify the resource </li></ul></ul></ul></ul><ul><ul><li>Is associated with one or more web services, providing interfaces for manipulating it. </li></ul></ul><ul><ul><li>A WS-Resource comprises: its service; the resource itself </li></ul></ul><ul><li> </li></ul>
    29. 29. Running Example <ul><li>Seat Booking System for a Specific Event </li></ul><ul><li>Resource – Event6 </li></ul><ul><ul><li>Properties </li></ul></ul><ul><ul><ul><li>Places – number of seats in total </li></ul></ul></ul><ul><ul><ul><li>Held – number of seats with provisional bookings </li></ul></ul></ul><ul><ul><ul><li>Booked – number of seats with confirmed bookings </li></ul></ul></ul><ul><ul><li>Service </li></ul></ul><ul><ul><ul><li>End-point – </li></ul></ul></ul><ul><ul><ul><li>Operations </li></ul></ul></ul><ul><ul><ul><ul><li>Get – returns the resource properties </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Reserve – creates a reservation resource </li></ul></ul></ul></ul><ul><ul><ul><li>… . </li></ul></ul></ul>
    30. 30. Running Example <ul><li>Resource – Reservation (i.e. a booking) </li></ul><ul><ul><li>Properties – </li></ul></ul><ul><ul><ul><li>RNo – reservation number Identifier, not an actual property </li></ul></ul></ul><ul><ul><ul><li>Firm - number of seats with confirmed booking </li></ul></ul></ul><ul><ul><ul><li>Hold – number of seats with provisional booking </li></ul></ul></ul><ul><ul><ul><li>Seats – list of seat numbers allocated </li></ul></ul></ul><ul><ul><ul><li>Arrival – expected time of arrival </li></ul></ul></ul><ul><ul><li>Service </li></ul></ul><ul><ul><ul><li>End-point - </li></ul></ul></ul><ul><ul><ul><li>Operations </li></ul></ul></ul><ul><ul><ul><ul><li>Get – retrieve the properties </li></ul></ul></ul></ul><ul><ul><ul><ul><li>SetArrival – change/set the Arrival property </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Change – reset reservation properties (firm=n; hold=m) </li></ul></ul></ul></ul><ul><ul><ul><li>… . </li></ul></ul></ul>
    31. 31. Referencing <ul><li>Resource-qualified endpoint reference – the service address and specific resource identifier – part of WS-Addressing Standard. </li></ul><ul><li>If service has only one resource instance (1:1) don’t need to include resource identifier in address. </li></ul> places: 120 held: 6 booked: 8 1:* reserve(3, “hold”) firm:0 hold:3 seats: K1, K2, K3 arrival: nil create ( :: X3) Resource qualified End-point reference 1:1 Change(Firm=2, Hold=0) <ul><li>RNo: X3 </li></ul> :: X3
    32. 32. Multiply-serviced Resource <ul><li>Two end-point references </li></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>Each providing a different interface to the same set of resource instances </li></ul>firm:0 hold:3 seats: K1, K2, K3 arrival: nil Change(Firm=2, Hold=0) <ul><li>RNo: X3 </li></ul> :: X3 clearHolds(1) :: X3 - Get - SetArrival - Change - ClearHolds - ChangeSeats - Get
    33. 33. Operations on Resource Properties <ul><li>WS-ResourceProperties </li></ul><ul><li> </li></ul><ul><li>GetResourcePropertyDocument - retrieve the values of all resource properties of the WS-Resource. </li></ul><ul><li>GetResourceProperty – get single property. Mandatory. </li></ul><ul><li>GetMultipleResourceProperties – get multiple properties. </li></ul><ul><li>QueryResourceProperties - query resource properties document using a query expression such as XPath. </li></ul><ul><li>PutResourcePropertyDocument – replace all properties. </li></ul><ul><li>SetResourceProperties - modify the values of multiple resource properties – Insert, Update, Delete . </li></ul><ul><li>InsertResourceProperties - insert new values of a single resource property. </li></ul><ul><li>UpdateResourceProperties - replace the existing values of a single resource property. </li></ul><ul><li>DeleteResourceProperties - removal of all values of a single resource property. </li></ul>
    34. 34. GetResourceProperty <ul><li>Returns all elements with the specified element name </li></ul><env:envelope ….namespace definitions ..> <env:Header> <wsa:Action> http://...wsrf.../ GetResourceProperty </> <wsa:To env:mustUnderstand=“1”> </> <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 </> </></>
    35. 35. Get Multiple Resource Properties <ul><li>Must specify at least one </li></ul><ul><li>Order in response should follow order in request </li></ul><env:envelope ….namespace definitions ..> <env:Header> <wsa:Action> http://...wsrf.../ GetMultipleResourceProperties </> <wsa:To env:mustUnderstand=“1”> </> <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 </> </></>
    36. 36. SetResourceProperties <ul><li>A number of SetRequestComponents, each – insert, update, delete </li></ul><ul><li>Must be done in given order – could have several for same element name </li></ul><ul><li>If failure on one: </li></ul><ul><ul><li>Must not do any subsequent ones </li></ul></ul><ul><ul><li>Final result may reflect the partial processing </li></ul></ul><ul><ul><li>Final result may be the original </li></ul></ul><env:envelope ….namespace definitions ..> <env:Header> <wsa:Action> http://...wsrf.../ SetResourceProperties </> <wsa:To env:mustUnderstand=“1”> .</> <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></> </></>
    37. 37. SetResourceProperties <ul><li>Faults </li></ul><ul><ul><li>ResourceUnknownFault </li></ul></ul><ul><ul><li>InvalidResourcePropertiesRequestContent </li></ul></ul><ul><ul><ul><li>The result would be a properties document which is invalid, e.g. too many seats if maxoccurrs=3 </li></ul></ul></ul><ul><ul><li>UnableToModifyResourceProperty – a read-only resource </li></ul></ul><ul><ul><li>InvalidResourcePropertyQName </li></ul></ul><ul><ul><li>SetResourcePropertyRequestFailed – one or more components failed </li></ul></ul><ul><ul><li>… to be defined </li></ul></ul><ul><ul><li>Fault message must indicate whether effects of processing non-failed components were restored </li></ul></ul>firm:0 hold:3 seats: K1, K2, K3 arrival: 15:00:00 <ul><li>RNo: X3 </li></ul>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 </> </></></>
    38. 38. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    39. 39. WS-ResourceLifetime <ul><li>Lifetime of a WS-Resource is defined as the period between its instantiation and its destruction. </li></ul><ul><li>Specification defines standard by which: </li></ul><ul><ul><li>WS-Resource can be destroyed. </li></ul></ul><ul><ul><li>Lifetime can be monitored. </li></ul></ul><ul><li>Specification does not prescribe the means by which a WS-Resource is created. </li></ul>
    40. 40. Immediate Destruction <ul><li>Destroy </li></ul><ul><ul><li><s11:Envelope . . .> </li></ul></ul><ul><ul><li><s11:Header> </li></ul></ul><ul><ul><li>. . . </li></ul></ul><ul><ul><li><wsa:Action> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li></wsa:Action> </li></ul></ul><ul><ul><li>. . . </li></ul></ul><ul><ul><li></s11:Header> </li></ul></ul><ul><ul><li><s11:Body> </li></ul></ul><ul><ul><li><wsrf-rl:Destroy/> </li></ul></ul><ul><ul><li></s11:Body> </li></ul></ul><ul><ul><li></s11:Envelope> </li></ul></ul>
    41. 41. Scheduled Destruction <ul><li>SetTerminationTime </li></ul><ul><ul><li>RequestedTerminationTime </li></ul></ul><ul><ul><li>RequestedLifetimeDuration </li></ul></ul><ul><li>Querying Current Time </li></ul><ul><ul><li>Clock synchronization between the service requestor and the service provider. </li></ul></ul><ul><ul><li>Resource properties: </li></ul></ul><ul><ul><ul><li><wsrf-rl:CurrentTime> </li></ul></ul></ul><ul><ul><ul><li><wsrf-rl:TerminationTime> </li></ul></ul></ul>
    42. 42. Termination Time Expiration <ul><li>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. </li></ul><ul><li>An implementation MAY delay destruction of the WS-Resource at its own discretion. </li></ul>
    43. 43. Resource Destruction <ul><li>Immediate Destruction </li></ul><ul><ul><li>Send a destroy message to the resource-qualified endpoint </li></ul></ul><ul><ul><li>Thereafter any attempt to access it must result in a Unknown Resource fault message – this is a synchronisation point – the reply to the destroy </li></ul></ul><ul><ul><li>The consumer could decide to destroy the reservation resource – cancelling the reservation </li></ul></ul><ul><li>Scheduled Destruction </li></ul><ul><ul><li>Can request a modification in the termination time </li></ul></ul><ul><ul><ul><li>Extend the provisional booking for another 2 days </li></ul></ul></ul><ul><ul><ul><li>If termination time is in the past this may be interpreted as an immediate asynchronous destroy </li></ul></ul></ul><ul><li>A resourced service should have a destruction policy which does not depend on action by the consumer service </li></ul><ul><ul><li>Consumer may disappear at any time </li></ul></ul><ul><ul><li>Consumer may be impolite </li></ul></ul><ul><li>Risk of having the physical resources never recovered, and performance consequences of large number of useless resource instances. </li></ul>
    44. 44. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    45. 45. WS-Notification <ul><li>WS – BaseNotification </li></ul><ul><li>WS – Topics </li></ul><ul><li>WS – BrokeredNotification </li></ul>
    46. 46. Notification <ul><li>WS-Notification is draft standards dealing with the </li></ul><ul><ul><li>The Notification-based Interaction pattern – Event Driven </li></ul></ul><ul><li>Model - Subscribing to a Notification service on some topics </li></ul><ul><ul><li>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 ) </li></ul></ul><ul><ul><li>Topic Space - a forest of topic Trees </li></ul></ul><ul><ul><li>Publisher – distributes notification messages according to subscriptions </li></ul></ul><ul><ul><li>Producer – generates notification messages for Consumers </li></ul></ul><ul><ul><li>Can combine Producer and publisher - same service generates the event and sends it to the subscribers; otherwise Publisher is a Broker </li></ul></ul><ul><ul><li>Can separate them – producer generates the notification and sends it to a broker who distributes it according to subscriptions </li></ul></ul><ul><ul><li>Subscriber creates a subscription for a consumer in a Publisher </li></ul></ul><ul><ul><li>Consumer receives notification messages (may combine with subscriber) </li></ul></ul>webServices WSRF WSDL travel USA EU
    47. 47. Notification and WSRF <ul><li>NotificationProducer Interface </li></ul><ul><ul><li>Notify </li></ul></ul><ul><ul><li>Subscribe </li></ul></ul><ul><ul><li>GetCurrentMessage </li></ul></ul><ul><li>PullPoint Interface </li></ul><ul><li>SubscriptionManager Interface </li></ul><ul><li>Relation to WSRF </li></ul><ul><ul><li>A subscription is a resource </li></ul></ul><ul><ul><li>A resourced service can be producer/publisher: </li></ul></ul><ul><ul><ul><li>To notify consumers of changes in state of the resource </li></ul></ul></ul><ul><ul><ul><ul><li>Value change </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Destruction </li></ul></ul></ul></ul>
    48. 48. Destruction Notification Pattern <ul><li>WS-Notification standard deals with this </li></ul><ul><li>Subscribe to the resource </li></ul><ul><li>Resource notifies subscriber </li></ul> places: 120 held: 6 booked: 8 reserve(3, firm) firm:3 hold:0 … Subscribe(topic=ResourceTermination) <ul><li>RNo: X3 </li></ul> :: X3 ( :: X3) EventCancelled : X3 Notify(“Event Cancelled”, dateTime)
    49. 49. Destruction Notification <ul><li>If Resource chooses to support the pattern of notifying interested parties when it is destroyed </li></ul><ul><li>And to use the WS-Notification standard, </li></ul><ul><li>Then must follow this standard </li></ul><ul><li>The TopicSpace = “ResourceLifetime” </li></ul><ul><li>The Topic name=“ResourceTermination” </li></ul><ul><li>The notification message must include the following element </li></ul><wsrl:TerminationNotificaton> <wsrl:TerminationTime> xsd:dateTime </> <wsrl:TerminationReason> xsd:any </> ? </>
    50. 50. Value Change Notification <ul><li>Can similarly subscribe to being notified of value changes for the resource. </li></ul><ul><li>If the resource supports the property value-change notification pattern, and it uses WS-Notification then it must follow these standards </li></ul><ul><ul><li>Subscription can be a sub-set of the resource properties </li></ul></ul><ul><ul><ul><li>E.g. wanting notification of changes in seat numbers </li></ul></ul></ul><ul><ul><li>The notification message must contain an element of the form </li></ul></ul><wsrp:ResourcePropertyValueChangeNotification> <wsrp:OldValue> <seat> K1 </> <seat> K2 </> <seat> K3 </></> <wsrp:NewValue> <seat> K1 </> <seat> K2 </> <seat> J4 </></></> <ul><li>One such notification for every value change </li></ul><ul><li>OldValue – if nil, there was no value; if absent the old value was not recorded </li></ul><ul><li>NewValue – can be nil </li></ul><ul><li>!!!Standard does not actually allow multiple components!!! </li></ul>
    51. 51. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    52. 52. WS-BaseFaults <ul><li>Difficult when interfaces use different conventions for representing common information in fault messages. </li></ul><ul><li>So specify Web Service fault messages in a common way. </li></ul><ul><li>WS-BaseFaults defines an XML Schema type for a base fault, along with rules for how this fault type is used by Web Services. </li></ul>
    53. 53. Base Fault Type <ul><li>Base fault has the following syntax: </li></ul><ul><li><BaseFault> </li></ul><ul><li><Timestamp>xsd:dateTime</Timestamp> </li></ul><ul><li><OriginatorReference> </li></ul><ul><li>wsa:EndpointReferenceType </li></ul><ul><li></OriginatorReference> ? </li></ul><ul><li><ErrorCode dialect=&quot;anyURI&quot;> </li></ul><ul><li>xsd:anyType </li></ul><ul><li></ErrorCode> ? </li></ul><ul><li><Description> xsd:string </Description> * </li></ul><ul><li><FaultCause>{any}</FaultCause> ? </li></ul><ul><li>{any}* </li></ul><ul><li></BaseFault> </li></ul>
    54. 54. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    55. 55. What is WSDL? <ul><li>In XML format </li></ul><ul><li>For describing network services </li></ul><ul><ul><li>Which operate either on </li></ul></ul><ul><ul><ul><li>Documents </li></ul></ul></ul><ul><ul><ul><li>Procedure calls </li></ul></ul></ul><ul><ul><li>Describes the exposed interface – i.e. What the consumer sees of the service </li></ul></ul><ul><ul><li>Constitutes a contract with the client </li></ul></ul><ul><ul><ul><li>Provides a specification of what is offered by the service provider which can be relied on by the service consumer. </li></ul></ul></ul>
    56. 56. What is WSDL? <ul><li>Supports separation of concerns </li></ul><ul><ul><ul><li>logical structure of messages </li></ul></ul></ul><ul><ul><ul><li>binding to a specific underlying protocol </li></ul></ul></ul><ul><ul><ul><li>definition of a particular deployed service </li></ul></ul></ul><ul><ul><li>To allow common definition and re-combination </li></ul></ul><ul><li>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. </li></ul><ul><li>Here using WSDL 1.1 – a W3C submission (March 2001). </li></ul><ul><li>WSDL 2.0 – is a W3C Candidate Recommendation (6 January 2006) – many differences. </li></ul>
    57. 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> * Abstract Physical
    58. 58. Contents of a WSDL document <ul><li>Types – a container for data type definitions using some type system (such as XSD). </li></ul><ul><li>Message – an abstract, typed definition of the data being communicated. </li></ul><ul><li>Operation – an abstract description of an action supported by the service. </li></ul><ul><li>Port Type –an abstract set of operations supported by one or more endpoints. </li></ul><ul><li>Binding – a concrete protocol and data format specification for a particular port type. </li></ul><ul><li>Port – a single endpoint defined as a combination of a binding and a network address. </li></ul><ul><li>Service – a collection of related endpoints. </li></ul>
    59. 59. Services Structure Example <ul><li>Company Provides two types of service (PortTypes) </li></ul><ul><ul><li>General Service </li></ul></ul><ul><ul><ul><li>Get general information </li></ul></ul></ul><ul><ul><ul><li>Open an account </li></ul></ul></ul><ul><ul><li>Customers Service (being a “Customer” = having an account) </li></ul></ul><ul><ul><ul><li>Purchase Order </li></ul></ul></ul><ul><ul><ul><li>Invoice </li></ul></ul></ul><ul><ul><ul><li>Payment Advice </li></ul></ul></ul><ul><ul><ul><li>Get Statement </li></ul></ul></ul><ul><li>Both over two kinds of binding </li></ul><ul><ul><li>RPC </li></ul></ul><ul><ul><li>Email </li></ul></ul>
    60. 60. Services Structure Example Binding : Service : Location= www. …/WS-RPC www…/GenRPC www…/CustRPC www…/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 … .
    61. 61. Services Structure Example Binding : Service : Location= www. …/WS-RPC www…/GenRPC www…/CustRPC www…/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 roles Provider proactive = client Consumer reactive = server
    62. 62. Request - Response <ul><li>Most Common Pattern </li></ul><ul><ul><li>Message to service provider; reply to service consumer </li></ul></ul><ul><li>A logical pattern, Binding might be either </li></ul><ul><ul><li>An HTTP request/response </li></ul></ul><ul><ul><li>Two HTTP requests </li></ul></ul><wsdl:message name=POinM> <part name=accInfo type=m:accInfoT> <part name=order element=m:accInfoT> </> <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
    63. 63. Solicit - Response <ul><li>Backwards two-way Pattern </li></ul><ul><ul><li>Message from service provider to consumer; reply from consumer to provider </li></ul></ul><ul><li>Example – “overdue payment” </li></ul><ul><ul><li>Company sends this notification to the customer and expects a response </li></ul></ul><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!
    64. 64. Single Message <ul><li>Notify </li></ul><ul><ul><li>Message from service provider to consumer, with no reply </li></ul></ul><ul><ul><li>Example – “Invoice” </li></ul></ul><ul><ul><ul><li>Send an invoice </li></ul></ul></ul><ul><li>One-way -- Request with no reply </li></ul><ul><ul><li>Message from service consumer to provider </li></ul></ul><ul><ul><li>Example – “payment advice” </li></ul></ul><ul><ul><ul><li>Company gets notification from customer that a payment has been made </li></ul></ul></ul><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
    65. 65. Binding - General <ul><li>A Binding defines </li></ul><ul><ul><li>For a particular PortType – named as its “type” </li></ul></ul><ul><ul><li>Particular message format and communication protocol details </li></ul></ul><ul><ul><ul><li>By extensibility point </li></ul></ul></ul><ul><ul><ul><li>A standard extension is SOAP binding </li></ul></ul></ul><ul><li>Can have multiple bindings for one PortType </li></ul><ul><ul><li>Different modes in which it can be accessed </li></ul></ul>Binding : Service : Location= www…/GenRPC www…/CustRPC www…/GenEM www…/GenEM Binding : Service : Location= Binding : Service : Location= Binding : Service : Location= PortType :General Op : GenInfo  … . PortType :Customer Op : PurchOrder  … . Message: Mess Schema
    66. 66. Binding Extensions <ul><li>There are a number of defined bindings </li></ul><ul><ul><li>SOAP – identify the SOAP standards </li></ul></ul><ul><ul><ul><li>Transport </li></ul></ul></ul><ul><ul><ul><ul><li>Over HTTP </li></ul></ul></ul></ul><ul><ul><ul><ul><li>… . </li></ul></ul></ul></ul><ul><ul><ul><li>Style </li></ul></ul></ul><ul><ul><ul><ul><li>RPC </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Document </li></ul></ul></ul></ul><ul><ul><ul><li>Use </li></ul></ul></ul><ul><ul><ul><ul><li>Literal </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Encoded </li></ul></ul></ul></ul><ul><ul><li>HTTP </li></ul></ul><ul><ul><li>MIME </li></ul></ul><ul><li>SOAP over HTTP, Literal is most commonly used </li></ul><ul><ul><li>all we will deal with here </li></ul></ul>
    67. 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> … </></></> RPC Actual messages Document Actual messages
    68. 68. Introduction - Contents <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>
    69. 69. Naming <ul><li>Naming definitions </li></ul><ul><li>Requirements on names </li></ul><ul><li>Existing naming schemes </li></ul><ul><li>Overview of the Handle syntax </li></ul><ul><li>NextGRID Experiment in WP1 </li></ul><ul><li>Summary </li></ul>
    70. 70. Naming definitions <ul><li>“ Name” - attribute used to identify an entity. In OGSA-naming, 3 types: human-oriented names, abstract names, and addresses. </li></ul><ul><li>“ Human-oriented name” - a naming scheme designed to be easily interpreted by humans (e.g. human-readable and human-parsable). </li></ul><ul><li>“ Abstract name” - persistent name suitable for machine processing that does not necessarily contain location information. Abstract names are bound to addresses. </li></ul><ul><li>“ Address” - specifies the location of an entity. </li></ul><ul><li>Additionally, </li></ul><ul><li>“ Resolution” – Name resolution is the mapping of human names to abstract names, which are then mapped to some form of address. </li></ul><ul><ul><li>E.g. A name resolution function could be: Address Resolve(AbstractName); </li></ul></ul>
    71. 71. Requirements on names <ul><li>Names and naming schemes need to: </li></ul><ul><li>Be transmitted and resolved in a new context. </li></ul><ul><li>Name all entities in the universe of discourse that need naming. </li></ul><ul><li>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. </li></ul><ul><li>Allow scalable distributed name resolution. </li></ul><ul><li>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. </li></ul><ul><li>Be robust and trusted - data confidentiality and privacy need to be included. </li></ul><ul><li>Have global scope - it needs to have the same meaning everywhere, extensible & internationalisable. </li></ul><ul><li>Globally unique – the same name will never (to best probability affordable) be assigned to two different objects. </li></ul>
    72. 72. Existing naming schemes <ul><li>Uniform Resource Identifier (URI) - a string used for identifying an abstract or physical resource in a web application. </li></ul><ul><li>Uniform Resource Locator (URL) - the address of an Internet resource named as a combination of a DNS name and local name. </li></ul><ul><li>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 </li></ul><ul><li>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 . </li></ul><ul><li>Life Science Identifiers (LSIDs) - persistent, location-independent, resource identifiers for uniquely naming biologically significant resources. E.g. . </li></ul><ul><li>Extensible Resource Identifier (XRI) - built directly on top of URI & IRI specifications. Examples: </li></ul><ul><ul><li>xri://*agency*department/!(urn:ISBN:0-395-36341-1) </li></ul></ul><ul><ul><li>xri://@!9990!A58F!1C3D/!(urn:ISBN:0-395-36341-1) </li></ul></ul>
    73. 73. Existing naming schemes <ul><li>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. </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul><ul><li>Domain Name Service (DNS) – primarily designed for mapping domain names into IP Addresses for network routing purposes. </li></ul><ul><li>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. </li></ul><ul><li> - 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. </li></ul>
    74. 74. Overview of the Handle syntax <ul><li>Handle System architecture defines a hierarchical service model. </li></ul><ul><ul><li>Single top level service, known as the Global Handle Registry (GHR). </li></ul></ul><ul><ul><li>Lower levels known as Local Handle Services (LHS). </li></ul></ul><ul><li>Syntax: </li></ul><ul><li><Handle> ::= <Handle Naming Authority> &quot;/&quot; <Handle Local Name> </li></ul><ul><li> meets all of the requirements for allowing scalable distributed name resolution, autonomous allocation of names, be secure, extensible, and guarantee global uniqueness. </li></ul><ul><li>Server and client software is available through its website, </li></ul><ul><li>Handle Proxy Sever is </li></ul>
    75. 75. NextGRID Experiment in WP1 <ul><li>NextGRID project Naming Authority Handle: </li></ul><ul><ul><li>0.NA/2131 </li></ul></ul><ul><li>Also have sub-prefixes for workpackages. </li></ul><ul><ul><li>0.NA/2131/WP1 </li></ul></ul>NextGRID BSCW Server Other NextGRID Server Other NextGRID Service Naming webpage Handle System Proxy Server webpage Resolve name. (Read-only) Create, delete, modify & list names. Create, delete, modify & list names. Interfaces ?? Security model ?? Client PC Handle Admin Tool (EPCC Server) Handle Names DB Handle Server Software NextGRID Naming Service
    76. 76. The End <ul><li>What is a Service-Oriented Architecture? </li></ul><ul><ul><li>Web services stack. </li></ul></ul><ul><ul><li>SOAP. </li></ul></ul><ul><li>OGSA WSRF Basic Profile 1.0 </li></ul><ul><ul><li>WS-Addressing </li></ul></ul><ul><ul><li>WS-ResourceProperties </li></ul></ul><ul><ul><li>WS-ResourceLifetime </li></ul></ul><ul><ul><li>WS-BaseNotification </li></ul></ul><ul><ul><li>WS-BaseFaults </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><li>Naming </li></ul>Questions?