This document is also available in these non-normative formats: PostScript version and PDF version.
Copyright © 2003 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
This document defines the Web Services Architecture. The architecture identifies the functional components, defines the relationships among those components, and establishes a set of constraints upon each to effect the desired properties of the overall architecture.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This is the third public Working Draft of the Web Services Architecure specification. It has been produced by the W3C Web Services Architecture Working Group, which is part of the W3C Web Services Activity. Since the last publication, the concepts and relationships have been organized into five architectural models (see 2.3 The Architectural Models).
A list of open issues against this document is maintained by the Working Group.
Comments on this document should be sent to www-wsa-comments@w3.org ( public archives ). It is inappropriate to send discussion emails to this address.
Discussion of this document takes place on the public www-ws-arch@w3.org mailing list ( public archives ) per the email communication rules in the Web Services Architecture Working Group Charter.
Patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than 'work in progress.'
1 Introduction
1.1 Purpose of the Web Service Architecture
1.2 Intended Audience
1.3 Document Organization
1.4 Notational Conventions
1.5 What is a Web service?
1.5.1 Agents and Services
1.5.2 Requester and Provider
1.5.3 Service Description
1.5.4 Semantics
1.5.5 The Role of Humans
1.6 Architectural Style
1.6.1 Interoperability Architecture
1.6.2 Service Oriented Architecture
1.6.3 SOA and REST archictures
1.7 Web Service Technologies
2 Core Concepts and Relationships
2.1 Introduction
2.2 How to read this architecture
2.2.1 Concepts
2.2.2 Relationships
2.2.3 Feature
2.2.4 Model
2.2.5 Conformance
2.3 The Architectural Models
2.3.1 Message Oriented Model
2.3.1.1 Correlation
2.3.1.2 Intermediary
2.3.1.3 Message
2.3.1.4 Message envelope
2.3.1.5 Message Exchange Pattern (MEP)
2.3.1.6 Message Header
2.3.1.7 Message description language
2.3.1.8 Message Identifier
2.3.1.9 Message Path
2.3.1.10 Message recipient
2.3.1.11 Message sender
2.3.1.12 Message Transport
2.3.1.13 Reliable messaging
2.3.2 The Service Oriented Model
2.3.2.1 Action
2.3.2.2 Agent
2.3.2.3 Choreography
2.3.2.4 Choreography Description Language
2.3.2.5 Service
2.3.2.6 Service description
2.3.2.7 Service end point
2.3.2.8 Service interface
2.3.2.9 Service operation
2.3.2.10 Service provider
2.3.2.11 Service requester
2.3.2.12 Service semantics
2.3.2.13 Service Task
2.3.3 The Resource Oriented Model
2.3.3.1 DELETE
2.3.3.2 Discovery
2.3.3.3 Discovery Service
2.3.3.4 GET
2.3.3.5 Identifier
2.3.3.6 PUT
2.3.3.7 Representation
2.3.3.8 Resource
2.3.4 The Policy Model
2.3.4.1 Audit guard
2.3.4.2 Authentication
2.3.4.3 Domain
2.3.4.4 Obligation
2.3.4.5 Permission
2.3.4.6 Permission guard
2.3.4.7 Person or organization
2.3.4.8 Policy
2.3.4.9 Policy guard
2.3.5 The Management Model
2.3.5.1 Deployed element
2.3.5.2 Life cycle
2.3.5.3 Management capability
2.3.5.4 Management configuration
2.3.5.5 Management event
2.3.5.6 Manager
2.3.5.7 Manageable Element
2.3.5.8 Manageability Interface
2.3.5.9 Management metric
2.4 Relationships
2.4.1 The is a relationship
2.4.1.1 Summary
2.4.1.2 Relationships to other elements
2.4.1.3 Description
2.4.2 The describes relationship
2.4.2.1 Summary
2.4.2.2 Relationships to other elements
2.4.2.3 Description
2.4.3 The is expressed in relationship
2.4.3.1 Summary
2.4.3.2 Relationships to other elements
2.4.3.3 Description
2.4.4 The has a relationship
2.4.4.1 Summary
2.4.4.2 Relationships to other elements
2.4.4.3 Description
2.4.5 The realized relationship
2.4.5.1 Summary
2.4.5.2 Relationships to other elements
2.4.5.3 Description
3 Stakeholder's perspectives
3.1 Web integration
3.2 Information and service
3.3 Web service agents
3.4 Web Service Discovery
3.4.1 Scenarios Not Requiring Discovery
3.4.2 Scenarios Requiring Discovery
3.4.2.1 Human Discovery
3.4.2.2 Autonomous Selection
3.4.2.3 Triangle Diagram
3.5 Web service semantics
3.6 Web services security
3.6.1 Threats to security and privacy
3.6.2 Policies
3.6.2.1 Policies and security
3.6.2.2 Policies and privacy
3.6.3 Policies beyond security
3.7 Scalability and extensibility
3.8 Modularity
3.9 Extensibility
3.10 Peer to peer interaction
3.11 Long running transactions
3.12 Conversations
3.13 Message reliability
3.14 Web service manageability
3.15 Web services technologies
3.15.1 XML and Web services
3.15.2 SOAP
3.15.3 WSDL
A Acknowledgments (Non-Normative)
B References (Non-Normative)
C Web Services Architecture Change Log (Non-Normative)
| Editorial note | |
| dbooth editing this section. The previous "Contract with the Reader" has been merged into this section. | |
Web services provide a standard means of interoperating between different software applications, running on a variety of platforms and/or frameworks. This document (WSA) is intended to provide a common definition of a Web service, and define its place within a larger Web services framework to guide the community.
The WSA provides a model and a context for understanding Web services and the relationships between the various specifications and technologies that comprise the WSA. The WSA promotes interoperability through the definition of compatible protocols. The architecture does not attempt to specify how Web services are implemented, and imposes no restriction on how services might be combined. The WSA describes both the minimal characteristics that are common to all Web services, and a number of characteristics that are needed by many, but not all, Web services.
The WSA integrates different conceptions of Web services under a common "reference architecture". There isn't always a simple one to one correspondence between the architecture of the Web and the architecture of existing SOAP-based Web services, but there is a substantial overlap.
We offer a framework for the future evolution of Web services standards that will promote a healthy mix of interoperability and innovation. That framework must accommodate the edge cases of pure SOAP-RPC at one side and HTTP manipulation of business document resources at the other side, but focus on the area in the middle where the different architectural styles are both taken into consideration.
This document is intended for a large and diverse audience. Expected readers include users and creators of individual Web services, Web service specification authors, and others.
This document provides introductory overview material followed by normative material.
The body of the architecture is presented as a set of core concepts and key relationships between them. A core concept is usually a noun, but does not have to be, and the relationships between conncepts are usually predicates, i.e., verbs. Both noun-style and verb-style concepts are present in the architecture, the latter playing a prominent role in the relationships between concepts.
A primary goal of the concepts section is to provide a basis for measuring conformance to the architecture. For example, the resource concept states that resources have identifiers (in fact they have URIs). Using this assertion as a basis, we can measure conformance to the architecture of a particular resource by looking for its identifier. If, in a given instance of this architecture, a resource has no identifier, then it is not a valid instance of the architecture.
While the concepts and relationships represent an enumeration of the architecture, the stakeholders' viewpoints approaches from a different perspective: how the architecture meets the goals and requirements. In this section we elucidate the more global properties of the architecture and demonstrate how the concepts actually achieve important objectives.
A primary goal of the Stakeholder's Perspectives section is to relate the actual architecture with the requirements of the architecture, especially as outlined in the Web services requirements [WSA Reqs] document.
For example, in the 3.14 Web service manageability section we show how the management of Web services is modeled within the architecture. The aim here is to demonstrate that Web services are manageable and which key concepts and features of the architecture achieve that goal. In this case, manageability is realized by showing a link between the concept of a physically deployed resource and the abstract concept it realizes (such as a Web service). Management of such deployed resources then leads to management of Web services themselves.
The key stakeholder's viewpoints supported in this document reflect the major goals of the architecture itself: interopability, extensibility, security, Web integration, implementation and manageability.
Where appropriate, the WSA also identifies candidate technologies that have been determined to meet the functionality requirements defined within the architecture.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119].
There are many things that might be called "Web services" in the world at large. However, for the purpose of this Working Group and this architecture, and without prejudice toward other definitions, we will use the following definition:
[Definition: A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the 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.]
A Web service is viewed as an abstract notion that must be implemented by a concrete agent. (See Figure 1.) The agent is the concrete entity (a piece of software) that sends and receives messages, while the service is the abstract set of functionality that is provided. To illustrate this distinction, you might implement a particular Web service using one agent one day (perhaps written in one programming language), and a different agent the next day (perhaps written in a different programming language). Although the agent may have changed, the Web service remains the same.
The purpose of a Web service is to provide some functionality on behalf of its owner -- a person or organization, such as a business or an individual. The provider entity is the person or organization that provides an appropriate agent to implement a particular service. (See Figure 1: Basic Architectural Roles.)
A requester entity is a person or organization that wishes to make use of a provider entity's Web service. It will use a requester agent to exchange messages with the provider entity's provider agent. In order for this message exchange to be successful, the requester entity and the provider entity must first agree on both the semantics and the mechanics of the message exchange.
The mechanics of the message exchange are documented in a Web service description (WSD). (See Figure 1.) The WSD is a machine-processable specification of the Web service's interface. It defines the message formats, datatypes, transport protocols, and transport serialization formats that should be used between the requester agent and the provider agent. It also specifies one or more network locations ("endpoints") at which a provider agent can be invoked, and may provide some information about the message exchange pattern that is expected.
The semantics ("Sem" in Figure 1) of the message exchange represents the "contract" between the requester entity and the provider entity regarding the purpose and consequences of the interaction. It also includes any additional details on the mechanics of the message exchange that are not specified in the service description. Although this contract represents the overall agreement between the requester entity and the provider entity on how and why their respective agents will interact, it is not necessarily written or explicitly negotiated. It may be explicit or implicit, oral or written, machine processable or human oriented.
While the service description represents a contract governing the mechanics of interacting with a particular service, the semantics represents a contract governing the meaning and purpose of that interaction.
Although one of the main purposes of Web services is to automate processes that might otherwise be performed manually, humans still play a role in their architecture and use, notably in two ways:
Humans need to agree on the semantics and the service description. Since a human (or organization) ultimately is the legal owner of any Web service, people must either implicitly or explicitly agree on the semantics and the service description that will govern the interaction.
Often this agreement will be accomplished by the provider entitity publicizing and offering both the semantics and the service description as take-it-or-leave-it "contracts" that the requester entity must accept unmodified as conditions of use. However, nothing in this architecture prevents them from reaching agreement by other means. For example, in some situations, the service description (excepting the network address of the service) may be defined by an industry organization, and shared by many requester and provider entities. In other situations, it may originate from the requester entity (even if it is written from provider entity's perspective).
Humans create the requester and provider agents (either directly or indirectly). Ultimately, humans must ensure that these agents implement the terms of the agreed-upon service description and semantics. There are many ways this can be achieved, and this architecture does not specify or care what means are used. For example:
an agent could be hard coded to implement a particular, fixed service description and semantics;
an agent could be coded in a more general way, and the desired service description and/or semantics could be input dynamically; or
an agent could be created first, and the service description and/or semantics could be produced from the agent code.
Regardless of the approach used, from an information perspective both the semantics and the service description must be somehow be input to, or embodied in, both the requester agent and the provider agent before the two agents can interact.
Figure 1: Basic Architectural Roles.
| Editorial note | |
| dbooth: Not sure how we should label the figures. Also, Figure 1 may need to be resized. | |
The Web services architecture is an interoperability architecture it identifies those global elements of the global Web services network that are required in order to ensure interoperability between Web services. It is not intended to be an architecture for individual Web services; the structure and implementation of these is inherently private and is left to the discretion of the developers of these. However, in order to ensure interoperability, certain concepts, relationships and constraints are important; and this architecture identifies those.
The major goals of the architecture are outlined in the Web Services Architecture Requirements document [WSA Reqs]. These goals are to promote
interoperability between Web services,
integration with the World Wide Web,
reliability of Web services,
security of Web services,
scalability and extensibility of Web services, and
manageability of Web services.
The role of this architecture is to provide a global perspective on the networked service architecture. Other specifications, such as [SOAP 1.2 Part 1] and [WSDL 1.2 Part 1] give detailed recommendations for specific requirements. This architecture is intended to show how these, and other related, technologies fit together to deliver the benefits of Web services.
Some non-goals of the architecture include:
to prescribe a specific programming model or programming technology
to constrain the internal architecture and implementation of specific Web services
to demonstrate how Web services are constructed
to be specific about how messages or other descriptions are formatted
to determine specific technologies for messaging, discovery, choreography etc.
The Web architecture and the Web Services Architecture (WSA) are instances of a Service Oriented Architecture (SOA). To understand how they relate to each other and to closely related technologies such as CORBA, it may be useful to look up yet another level and note that SOA is in turn a type of distributed system. A distributed system, consists of discrete software agents that must work together to implement some intended functionality. Furthermore, the agents in a distibuted system do not operate in the same processing environment, so they must communicate by hardware/software protocol stacks that are intrinsically less reliable than direct code invocation and shared memory. This has important architectural implications because distributed systems require that developers (of infrastructure and applications) consider the unpredictable latency of remote access, and take into account issues of concurrency and the possibility of partial failure. [Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant, "A Note On Distributed Computing"].
An SOA is a specific type of distributed system in which the agents are "services". For the purposes of this document, a service is a software agent that performs some well-defined operation (i.e., "provides a service") and can be invoked outside of the context of a larger application. That is, while a service might be implemented by exposing a feature of a larger application (e.g., the purchase order processing capability of an enterprise resource planning system might be exposed as a discrete service), the users of that server need be concerned only with the interface description of the service. Furthermore, most definitions of SOA stress that "services" have a network-addressable interface and communicate via standard protocols and data formats.
Figure 2, Generic Service Oriented Architecture Diagram
The description of a service in a SOA is essentially a description of the messages that are exchanged. This architecture adds the constraint of stateless connections, that is where the all the data for a given request must be in the request.
| Editorial note | |
| Put in a good word about the Semantic web and semantics in general here | |
In essence, the key components of a Service Oriented Architecture are the messages that are exchanged, agents that act as service requesters and service providers, and shared transport mechanisms that allow the flow of messages. In addition, in public SOAs, we include the public descriptions of these components: descriptions of the messages, descriptions of the services and so on. These descriptions may be machine processable, in which case they become potential messages themselves: for use in service discovery systems and in service management systems.
The World Wide Web is a SOA that operates as a networked information system that imposes some additional constraints: Agents identify objects in the system, called "resources," with Uniform Resource Identifiers (URIs). Agents represent, describe, and communicate resource state via "representations" of the resource in a variety of widely-understood data formats (e.g. XML, HTML, CSS, JPEG, PNG). Agents exchange representations via protocols that use URIs to identify and directly or indirectly address the agents and resources. [Web Arch]
An even more constrained architectural style for reliable Web applications known as "Representation State Transfer" or REST has been proposed by Roy Fielding and has inspired both the TAG's Architecture document and many who see it as a model for how to build Web services [Fielding]. The REST Web is the subset of the WWW in which agents are constrained to, amongst other things, expose and use services via uniform interface semantics, manipulate resources only by the exchange of "representations", and thus use "hypermedia as the engine of application state."
The scope of "Web services" as that term is used by this Working Group is somewhat different. It encompasses not only the Web and REST Web services whose purpose is to create, retrieve, update, and delete information resources but extends the scope to consider services that perform an arbitrarily complex set of operations on resources that may not be "on the Web." Although the distrinctions here are murky and controversial, a "Web service" invocation may lead to services being performed by people, physical objects being moved around (e.g. books delivered).
We can identify two major classes of "Web services":
REST-compliant or "direct resource manipulation" services in which in which the primary purpose of the service is to manipulate XML representations of Web resources using the a minimal, uniform set of operations operations,
"distributed object" or "Web-mediated operation" services in which the primary purpose of the service is to perform an arbitrarily complex set of operations on resources that may not be "on the Web", and the XML messages contain the data needed to invoke those operations.
In other words, "direct" services are implemented by Web servers that manipulate data directly, and "mediated" services are external code resources that are invoked via messages to Web servers.
| Editorial note | |
| Lots of open terminology issues here, such as what we call these two types of services, and whether the "Web service" is the interface to the external code or the external code itself. | |
Both classes of "Web services" use URIs to identify resources and use Web protocols and XML data formats for messaging. Where they fundamentally differ is that "distributed object" (editors' note: or "mediated services") use application specific vocabularies as the engine of application state, rather than hypermedia. Also, they achieve some of their benefits in a somewhat different way. The emphasis on messages, rather than on the actions that are caused by messages, means that SOAs have good "visibility": trusted third parties may inspect the flow of messages and have a good assurance as to the services being invoked and the roles of the various parties. This, in turn, means that intermediaries, such as firewalls, are in a better situation for performing their functions. A firewall can look at the message traffic, and at the structure of the message, and make predictable and reasonable decisions about security.
In REST-compliant SOAs, the visibility comes from the uniform interface semantics, essentially those of the HTTP protocol: an intermediary can inspect the URI of the resource being manipulated, the TCP/IP address of the requester, and the interface operation requested (e.g. GET, PUT, DELETE) and determine whether the requested operation should be performed. The TCP/IP and HTTP protocols have a widely supported set of conventions (e.g. known ports) to support intermediaries, and firewalls, proxies, caches, etc. are almost universal today. In non-REST [Ed. note: or "distributed object" or "mediated" ] but XML-based services, the visibility comes from the fact that XML is the universal meta-format for the data. Intermediaries can be programmed or configured to use the specifics of the SOAP XML format, standardized SOAP headers (e.g. for encryption, digital signature exchange, access control, etc.), or even generic XPath expressions to make routing, filtering, and cacheing decisions. XML-aware firewall and other "edge appliance" products are just coming to market as of this writing.
Web service architecture involves many layered and interrelated technologies. There are many ways to visualize these technologies, just as there are many ways to build and use Web services. Figure 3 provides one illustration of some of these technology families.
Figure 3: Stack Diagram.
Marketing documents from Web services vendors often contain a three-part diagram to show how the different Web services "standards" relate to one another: WSDL describes the format SOAP messages, and UDDI serves as a discovery service for the WSDL descriptions. The problem with such diagrams is that they don't convey the multiple dimensions of the Web services standards "space" and can't easily be extended to handle new standards, e.g. for security, management, choreography, and so on. In order to show the big picture of the Web services architecture as we envision it, the picture needs to be somewhat more complex.
First and foremost, XML is the "backplane" of the WSA. One can imagine Web services that don't depend on the SOAP envelope framework or processing model, or that don't employ WSDL to describe the interaction between a service and its consumers, but XML is much more fundamental. It provides the extensibility and vendor, platform, and language neutrality that is the key to loosely-coupled, standards-based interoperability that are the essence of the Web services value proposition. Furthermore, XML helps blur the distinction between "payload" data and "protocol" data, allowing easier mapping and bridging across different communications protocols, which is necessary in many enterprise IT infrastructures that are built on industrial-strength but proprietary components. Thus, the "base technology" of the WSA consists of some key XML specifications, including XML 1.x, XML Schema Description Language and the XML Base specification. Note that we do not rely on all XML technologies; for example, we do not rely on XML DTDs, in the architecture.
This leads to the next key concept in the WSA: services are invoked and provide results via messages that must be exchanged over some communications medium. The WSA encompasses a wide, almost infinite variety of communications mechanisms: HTTP (the dominant protocol of "the Web"), other Internet protocols such as SMTP and FTP, generic interface APIs such as JMS, earlier distributed object protocols such as IIOP, and so on. In principle, Web services invocation and result messages could be passed around by "sneakernet", RFC 1149-compliant carrier pigeons, or mechanisms that have not yet been invented. WSA says almost nothing about this communication layer other than it exists -- it does not specificy that it be at any particular level of the OSI reference architecture protocol stack, and allows Web services messages to be "tunnelled" over protocols designed for another purpose.
WSA does have quite a bit to say about the messages themselves, if not about the mechanism by which they are communicated. SOAP is the key messaging technology in the WSA: while very simple information transfer services can be implemented without SOAP, secure, reliable, multi-part, multi-party and/or multi-network applications are much easier to build if there is a standard way of packaging the messaging information in a protocol neutral way. This also allows the messaging infrastructure (which may be specialized hardware, SOAP intermediaries, or code libraries called by the ultimate recipient of a SOAP message) to provide authentication, encryption, access control, transaction processing, routing, delivery confirmation, etc. services. SOAP's envelope (and attachment) structure and header / processing model have proven to be a very robust and powerful framework within which to do this.
Interoperability across heterogenous systems requires a mechanism to allow the precise structure and data types of the messages to be commonly understood by Web services producers and consumers. WSDL is an obvious choice today as the means by which the precise description of Web services messages can be exchanged.
| Editorial note | |
| Obviously we have open issues with respect to whether description mechanisms such as shared code "qualify" here. | |
In the future, more sophisticated description languages that handle more of the *semantic* content of the messages are likely to become technologically viable, and such languages (perhaps based on RDF and OWL) will fit well in the WSA framework.
Beyond the description of individual messages such as WSDL provides, the WSA envisions a variety process descriptions: the process of discovering service descriptions that meet specified criteria, the process of describing multi-part and stateful sequences of messages, the aggregation of processes into higher-level processes, and so on. This area is much much clearly defined than other parts of the WSA, but there is much work going on and the WSA incorporates them at an abstract level.
In addition to specific messaging and description technologies, the architecture also provides for security and management. These are complex areas that touch on many of the different levels and technologies deployed in the service of Web services.
The formal core of the architecture is this enumeration of the core concepts and relationships that are central to Web services' interoperability.
The architecture is described in terms of a few simple elements: concepts, relationships, features and models. Concepts are often noun-like in that they identify things or properties that we expect to see in realizations of the architecture, similarly relationships are normally linguistically verbs.
As with any large-scale effort, it is often necessary to structure the architecture itself. We do this with two larger-scale "meta-concepts" — feature and model. Features are elements of the architecture which may be realized using concepts and relationships defined within the architecture itself. A model is a coherent portion of the architecture that focuses on a particular theme or aspect of the architecture.
A concept is expected to have some correspondence with any realizations of the architecture. For example, the message concept identifies a class of object (not to be confused with Objects and Classes as are found in Object Oriented Programming languages) that we expect to be able to identify in any Web services context. The precise form of a message may be different in different realizations — the message concept tells us what to look for in a given concrete system rather than prescribing its precise form.
Not all concepts will have a realization in terms of data objects or structures occurring in computers or communications devices; for example the person or organization refers to people and human organizations. Other concepts are more abstract still; for example, message reliability denotes a property of the message transport service — a property that cannot be touched but none-the-less is important to Web services.
Each concept is presented in a stylized regular way: consisting of a short definition, an enumeration of the relationships with other concepts, and a slightly longer explanatory description. For example, the concept for agent includes as relating concepts the fact that an agent is a computational resource, has an identifier and an owner. The description part of the agent explains in more detail why agents are important to the archicture.
Relationships denote a relationship between concepts. Syntactically, relationships are verbs; or more accurately, predicates.
A statement of a relationship typically takes the form: concept predicate concept. For example, in agent, we state that:
a computational resource
This statement makes an assertion, in this case about the nature of agents. Many such statements are descriptive, others are definitive:
Such a statement makes an assertion about valid instances of the architecture: we expect to be able to identify the message sender in any realization of the architecture. Conversely, any system for which we cannot identify the sender of a message is not conformant to the architecture.
A feature is a kind of concept that has a larger granularity — it may refer to a particular architectural requirement or to a network of concepts and relationships that defines a property with some internal structure. A key aspect of features is that they may have realizations, possibly within the architecture itself. A realization of a feature is simply a way — expressed in terms of other concepts and relationships — of implementing the feature. More accurately, a realization is a way of ensuring that the feature is satisfied within the architecture itself.
For example, message correlation is a feature of the architecture. The requirement is to be able to associate a message with a particular context. Message correlation may be realized in one of several ways:
message identifier in message
message occurrence in a stream of messages
By identifying the message correlation concept as a feature, we show that message correlation is simultaneously an important concept in the architecture, and that there is some guidance on how message correlation may be achieved.
A model is a coherent subset of the architecture that typically revolves around a particular aspect of the overall architecture. Models represent a complete explication of their focus; although there may be dependencies on other aspects of the architecture: these dependencies are well defined.
Each model is described separately below, in terms of the concepts and relationships inherent to the model. The ordering of the concepts in each model section is alphabetical; this should not be understood to imply any relative importance. For a more focused viewpoint the reader is directed to the Stakeholder's perspectives section which examines the architecture from the perspective of key stakeholders of the architecture.
The reason for choosing an alphabetical ordering is that, inevitably, there is a large amount of cross-referencing between the concepts. As a result, it is very difficult, if not misleading, to choose a non-alphabetic ordering that reflects some sense of priority between the concepts. Furthermore, the `optimal ordering' depends very much on the point of view of the reader. Hence, we devote the Stakeholders perspectives section to a number of prioriterized readings of the architecture.
Unlike language specifications, or protocol specifications, conformance to an architecture is necessarily a somewhat imprecise art. However, the presence of a concept in this enumeration is a strong hint that, in any realization of the architecture, there should be a corresponding feature in the implementation. Furthermore, if a relationship is identified here, then there should be corresponding relationships in any realized architecture. The absence of such a concrete feature may not prevent interoperability; but it will certainly make such interoperability more difficult.
A primary function of the Architecture's enumeration in terms of models, concepts and relationships is to give guidance about conformance to the architecture. For example, the architecture notes that a message has a message sender; any realization of this architecture that does not permit a message to be associated with its sender is not in conformance with the architecture.
Unless otherwise noted, all predicate statements relating concepts are normative: i.e., they should be interpreted as MUST be satisfied. Otherwise, the keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119.
This architecture has five models:
The Message Oriented Model which focuses on messages, message structure, message transport and so on — without particular reference as to the reasons for the messages, nor to their significance.
The Service Oriented Model which focuses on aspects of service, action and so on. While clearly, in any distributed system, services cannot be adequately realized without some means of messaging, the converse is not the case: messages do not need to relate to services.
The Resource Oriented Model focuses on resources. The ROM is layered over the SOM, and yet its focus is not really service but the nature of resources and the service actions associated with them. It is quite possible to conceive of a resource model that does not involve service, and conversely it is possible to have services without a strong notion of resource — hence the separation.
Of course, in the context of Web services, we do expect the resource model to be quite important.
The Policy Model focuses on policies associated with the architecture. Put simply, a policy is just a constraint on the behavior of agents and services. Policies may be enacted to represent security concerns, quality of service concerns, management concerns and even application concerns. The policy model focuses on the core concepts needed to relate all such policies to Web services.
The Management Model focuses on the management of Web services. It is a model that explicates the relationship between deployed elements, other elements of the architecture, and in particular what kind of management fits well with the use of Web services for managing Web services.
The Management model uses many of the other features and concepts of the architecture: including the concept of resource, description, service and so on. This is to be expected as deployed resources (for a Web service to be used by a requestor it must first be deployed) are also resources. The management view of a deployed resource is typically a meta-view of the resource.
The figure below illustrates the key models in the architecture, and their dependencies on each other. Each model in the figure is labeled with what may be viewed as the key concept of that model:

The Message Oriented Model focuses on those aspects of the architecture that relate to messages and the processing of them. Specifically, in this model, we are not concerned with any semantic significance of the content of a message or its relationship to other messages. However, the MOM does focus on the structure of messages, on the relationship between message senders, receivers and other message processors (such as intermediaries).
The MOM is illustrated in the figure:

Correlation [n.] is the association of a message with a context. Message correlation ensures that the agent requesting a service execution can match the reply with the request, especially when multiple replies may be possible.
A message identifier is a piece of information that is used to establish a relationship between one or more messages. A conversation identifier is used to establish a relationship between one or more parties that may exchange multiple messages.
Correlation, specifically message correlation, refers to the ability to identify a given message as being the message for a particular purpose. In a conversation, it is important to be able to determine that an actual message that has been received is the expected message. Often this is implicit when conversations are relayed over stream-oriented message transports; but not all transports allow correlation to be established so implicitly.
For situations where correlation must be handled explicitly, one technique is to associate a message identifier with messages. The message identifier is an identifier that allows a received message to be correlated with the originating request. The sender may also add an identifier for a service, not necessarily the originating sender, who will be the recipient of the message (see asynchronous messaging).
Correlation may be realized by the underlying protocol; it may be realized by an intermediary between the protocol and the application, ie specification of a conversation ID header; or it may be realized by the application. Application uses the identifier directly and it must be passed through and available to the application. The need for the application to do that depends on how much infrastructure intermediary software is present or not present.
An intermediary is an agent that is both a message recipient and a message sender. An intermediary may process some aspect of the message, and acts to forward the message to the next message recipient towards an ultimate message receiver along the message path.
a agent
to messages it processes
the messages along the message path
Intermediaries process messages and then forward them along the message path. An intermediary is not the ultimate message recipient of a message.
There are two types of intermediaries:
Forwarding intermediaries: the processing done by these agents was explicitely requested in the message by the message sender.
Active intermediaries: they are agents that undertake additional processing of the message in ways not described or requested by the message sender. This additional processing may be done without the message sender or receiver's knowledge, intent or consent. The potential set of services provided by an active intermediary includes, but is not limited to: security services, annotation services, and content manipulation services.
A message is the basic unit of data sent from one software agent to another in the context of Web services.
A message represents the data structure passed from its sender to its recipients. The structure of message is defined in service descriptions by a message description language.
A message is defined as a construct that can include zero or more headers, an envelope, data within the envelope and data external to the envelope. The header part of a message can include information pertinent to extended Web services functionality, such as security, transaction context, orchestration information, message routing information, or management information. The data part of a message contains the message content or URIs to the actual data resource.
A message can be as simple as an HTTP GET request, in which the HTTP headers are the headers and the parameters encoded in the URL are the content. Note that extended Web services functionality in this architecture is not supported in HTTP headers.
A message can also simply be a plain XML. However, such messages do not support extended Web services functionality defined in this architecture.
A message can be a SOAP XML, in which the SOAP headers are the headers. Extended Web services functionality are supported in SOAP headers.
A message envelope is that meta-data associated with a message that permits the message to be delivered, intact.
The message envelope is that information needed to actually deliver messages. It must at least contain sufficient address information so that the message transport can deliver the message. Typically this information is part of the service binding information found in a WSDL document.
Other meta data that may be present in an envelope includes security information to allow the message to be authenticated and quality of service information.
A correctly design message transport mechanism should be able to deliver a message based purely on the information in the envelope. For example, an encrypted message that fully protects the identities of the sender, recipient as well as the message content, may still be delivered using only the address information (and presumably the encrypted data stream itself).
A Message Exchanage Pattern (MEP) is a template, devoid of application semantics, that describes a generic pattern for the exchange of messages between agents.
a template describing a generic pattern for the exchange of messages between agents.
a feature of the architecture
a unique identifier
the life cycle of a message exchange
the temporal and causal relationships, if any, of multiple messages exchanged in conformance with the pattern.
the normal and abnormal termination of any message exchange conforming to the pattern.
a service invocation
Distributed applications in a Web services architecture communicate via message exchanges. A Message Exchange Pattern (MEP) is a template, devoid of application semantics, that establishes describes a generic a pattern for the exchange of (one-way) messages between agents. These message exchanges are logically factored into patterns that may compose at different levels. These patterns can be described by state machines that indicate define the flow of the messages, including the handling of faults that may arise, and the correlation of messsages.
In order to promote interoperability, it is useful to define common MEPs that are broadly adopted and unambiguously identified. When a MEP is described for the purpose of interoperability, it should be associated with a URI that will identify that MEP.
| Editorial note | |
| The following sentence is contentious in the paragraph below: "The exchanges may be synchronous or asynchronous. An asynchronous exchange involves some form of rendezvous to associate the message and its responses, typically due to separate invocations of the underlying transport or to long response time intervals." | |
At the SOAP messaging level, an MEP refers to an exchange of messages in various invoking-response patterns. Each message at this level may travel across multiple transports en route to its destination. A message and its response(s) are correlated, either implicitly in the underlying protocol (e.g., request-response in HTTP) or by other correlation techniques implemented at the binding level. The exchanges may be synchronous or asynchronous. An asynchronous exchange involves some form of rendezvous to associate the message and its responses, typically due to separate invocations of the underlying transport or to long response time intervals.
| Editorial note | |
| The following paragraph still has a draft status. | |
MEPs are abstract and must be mapped to a protocol. Some protocols may implicitly support certain MEPs, e.g., HTTP supports request-response. In other cases there is a need for additional glue to map MEPs onto a protocol.
Web service description languages at the level of WSDL view MEPs from the perspective of a particular service actor. A simple request-reponse MEP, for example, appears as an incoming message which invokes an operation and an associated outgoing message with a reply. Extremely simple applications based on single message exchanges may be adequately characterized at the operation level. More complex applications require multiple, related message exchanges.
| Editorial note | |
| The following paragraph is contingent on WS Choreography WG input. | |
Choreography describes patterns where the units of communication are themselves instances of MEPs and adds application semantics (choreography = MEPs + application semantics). Especially at this higher level of abstraction, the communicating actors are seen as peers which play various roles in more complex applications. These choreographic patterns form the communication structure of the application.
| Editorial note: FGM | |
| Not sure that the following text belongs here | |
Consider the pattern:
agent A uses an instance of an MEP (possibly request-response) to communicate initially with B.
agent B then uses a separate, but related instance of an MEP to communicate with C.
agent A uses another instance of an MEP to communicate with C but gets a reply only after C has processed (2).
The example makes it clear that the overall pattern cannot be described in terms of the inputs and outputs of any single interaction. The pattern involves constraints and relationships among the messages in the various MEP instances. It also illuminates the fact that exchange (1) is in in-out MEP from the perspective of actor B, and mirrored by an out-in MEP from the perspective of actor A. Finally, an actual application instantiates this communication pattern and completes the picture by adding computation at A, B and C to carry out application-specific operations.
It is instructive to consider the kinds of fault reporting that occur in such a layering. Consider a fault at the transport protocol level. This transport level may itself be able to manage certain faults (e.g., re-tries), but it may also simply report the fault to the binding level. Similarly the binding level may manage the fault (e.g., by re-initiating the underlying protocol) or may report a SOAP fault. The choreography and application layers may be intertwined or separated depending on how they are architected. There is also no rigid distinction between the choreography and binding layers; binding-level MEPs are essentially simple choreographies. Conceptually, the choreographic level can enforce constraints on message order, maintain state consistency, communicate choreographic faults to the application, etc. in ways that transcend particular bindings and transports.
A message header is the part of the message that is available to any potential intermediaries and contains information about the message, such as its structure and the identity of the service provider.
A message description language allows the structure of messages to be described.
A message identifier is an identifier that uniquely identifies a message.
a unique identifier
a message
A message may have an identifier. Message identifiers allow messages to be correlated within an extended transaction; for example, an event message may reference the original subscription request message.
Message identifiers also support message reliability and management and accountability of services: by providing the means to uniquely identify messages in an audit trail.
A message path is the sequence of agents that process a message; starting with the originating sender of the message and terminating with the intended recipient of the message.
a sequence of agents
zero or more message intermediaries,
A message path is the sequence of agents that process a message. A message has a unique originator and a recipient. However, messages may also be processed by a number of intermediaries that manage and constrain the message along its path.
a agent
an intermediary
The message recipient is an agent of possibly multiple agents that the message sender transmits the message to. The message recipient may be identified by its agent identifier in a message envelope; however, the agent identifier of the message recipient is not required to be supplied in the case of broadcast-style interactions.
In general, a message may be intended for more than one recipient. Furthermore, in some cases, the sending agent may not have direct knowledge of the identity of the message recipient (for example, in multicast or broadcast situations).
Messages may also be passed through intermediaries that process aspects of the message; typically by examining the message headers. The message recipient may or may not be aware of processing by such intermediaries.
A message sender is the agent that transmits a message.
an agent
an intermediary
A message sender is an agent that transmits a message to an agent in a message path. The message sender may be identified by its agent's identifier in a message envelope; however, the agent identifier of the message sender may not be available in the case of anonymous interactions.
Messages may also be passed through intermediaries that process aspects of the message; typically by examining the message headers. The sending agent may or may not be aware of such intermediaries.
A Message Transport is a mechanism that may be used by agents to deliver messages.
The message transport is the actual mechanism used to deliver messages. Examples of message transport include HTTP over TCP, SOAP transport, message oriented middleware, RMI and so on.
The primary responsibility of a message transport is to deliver messages intact. Other responsiblities may include timeliness, privacy, reliability and so on.
For a message transport to function, the sending agent must place the address of the initial recipient in the message envelope. In the case of a message path involving intermediaries, then the initial recipient is the first intermediary.
Reliable messaging is a feature that represents a key infrastructure-level notion of reliability.
a feature
a combination of message acknowledgement and correlation.
Reliable messaging is an important contributory factor to the overall reliability of Web services. The goal of reliable messaging is to both reduce the the error frequency for interactions and, where errors occur, to provide a greater amount of information about either successful or unsuccessful attempts at message delivery.
Reliable messaging may be realized with a combination of message receipt acknowlegment and correlation. In the event that a message has not been properly received, the sender may attempt a resend, or some other compensating action. Note that in a distributed system, it theoretically not possible to guarantee correct notification of delivery; however, in practice, simple techniques can greatly increase the overall confidence in the message delivery.
Message correlation may be used by the receivers of messages to ensure that messages are only acted on once - with duplicate messages being ignored or treated as errors.
The Service Oriented Model focuses on those aspects of the architecture that relate to Service and action.
The primary purpose of the SOM is to explicate the relationships between an agent, the services it offers and requests.
While it is clearly the case that an agent cannot offer or request a service without being able to send and receive messages, the SOM does not mention messages or message transport. The SOM builds on the MOM; but its focus is on action rather than message.
The concepts and relationships in the SOM are illustrated in the figure:

An action, for the purposes of this architecture, is any action that may be performed by an agent as a result of receiving a message, or results in sending a message or other observable state change.
At the core of the concept of service is the notion of one party performing action(s) on behalf of another party. A philosophical definition of action involves the application of effort (i.e., application of force) in order to achieve an observable change of state. From the perspective of Web service providers and requesters, an action is typically expressed in terms of executing some fragment of a program.
In the WSA, the actions performed by service providers and requesters are largely out of scope, except in so far as they are the result of messages being sent or received. In effect, the programs that are executed by agents are not in scope of the architecture, however the resulting messages are.
An agent is a program acting on behalf of another person, entity, or process [Web Arch].
a computational resource
an identifier
an owner that is a person or organization
one or more services
zero or more services
Agents are programs that engage in some set of actions as representatives of other entities. On the Web, for example, agents can seek information. Agents implement services.
Agents are the computational representatives of a person or organization. This architecture specifically eschews any attempt to govern the implementation of agents; it is only concerned with ensuring interopability between systems.
A choreography defines the sequence and conditions under which multiple cooperating independent Web services exchange information in order to achieve some useful function.
A choreography is model of the sequence of operations, states, and conditions which control how the interactions occur. Successfully following the pattern of interaction prescribed by a choreography should result in the completion of some useful function, for example: the placement of an order, information about its delivery and eventual payment, or putting the system into a well-defined error state.
A choreography is not to be confused with orchestration. An orchestration defines the sequence and conditions in which one Web service invokes other Web services in order to realize some useful function. I.e., an orchestration is the pattern of interactions that a Web service agent must follow in order to achieve its goal.
A choreography description language is a notation for describing a choreography.
the pattern of allowable interactions between a set of services
the life cycle of a service invocation
the conversations possible between service requesters and service providers.
A choreography description language is focussed on enabling the description of how to interact with services at a larger scale than the individual message exchange pattern. It permits the description of how Web services can be composed, how roles and associations in Web services can be established, and how the state, if any, of composed services is to be managed.
A choreography description language is a formal, machine-processable language for defining specific choreographies. It permits the description of how Web services can be used to acheive goals, how roles and associations in Web services can be established, and how the state, if any, of composed services is to be managed.
A service is a set of actions that form a coherent whole from the point of view of service providers and service requesters.
one or more tasks
one or more service providers
zero or more service requesters
an identifier
by one or more agents acting as service providers
exchanging messages
a service execution model
A service is a collection of related tasks that form a coherent whole, from the point of view of service providers and requesters. Critically, services have descriptions that may be formally expressed in one or more service description languages.
The concept of a service is distinct from the software agent that provides the service (and the software agent that requests it). A service refers to the actions performed by the agents rather than the agents themselves.
In the case of atomic or simple services, a service is provided through the actions of a single (possibly federated) software agent. In the case of a composite service, the service is provided through the collaboration of a collection of agents. In this latter case, it may not be obvious which software agent is providing the service either to the requester of a service or even to the agents providing the service.
A service has an identifier, which in this architecture is a URI. However, the service's identifier should not be construed as identifying any of the agents that perform the tasks offered by the service.
The service description defines the functionality of a service, the service semantics and the interface of the service, i.e how to interact with the service.
The semantics of a service is expressed in terms of the tasks that are performed by the service.
In a Service Oriented Architecture, the description of a service's interface is expressed in terms of the messages that may be exchanged between service providers and requesters.
What is identified with a service identifier?
Source:
The Web services architecture builds directly upon the Web architecture [Web Arch]. As such, the Web services architecture directly leverages the definition of, and architectural constraints placed on, identifiers from the identifiers from the Architecture of the World Wide Web.
URIs MUST be used to identify all conceptual elements of the system (see Web Services Architecture Requirements: AR009.3).
However, it is not clear what is referenced by a service identifier; is it the service end-points, the service description, the agent?. None of these seems definitive.
Resolution:
None recorded.
A service description is a set of documents that describe the interface to and semantics of a service.
a description of a service
a description of the service's interface
a description of the service's semantics
a description of the messages that are exchanged by the service
an identifier which is a URI.
A service description contains the details of the interface and implementation of the service. This includes its data types, operations, binding information, and network location. It could also include categorization and other meta data to facilitate discovery and utilization by requesters. The complete description may be realized as a set of XML description documents.
There are many potential uses of service descriptions, they may be used to facilitate the construction and deployment of services, they may be used by people to locate appropriate services and they may be used by service requesters to automatically discover appropriate providers in those case where requesters are able to may suitable choices.
A service end point is a network location at which an implementation of a service interface is made available.
an identifier
| Editorial note: HH | |
| Need a definition of binding / bound to | |
An end point is the realization of an interface. This realization can be done using different protocols: the end point is said to be bound to the interface that it realizes.
An interface can be realized by several end points. For example, the same interface could be exposed with SOAP over HTTP, SOAP over SMTP, etc.
A service interface is the abstract boundary that a service exposes. It is defined as a set of operations.
one or more service operations
A service interface defines the different sets of messages that a service sends and receives.
Like the definition of service operation, this definition is abstract. It usually is made available at a service endpoint.
A service operation is an abstract grouping of messages that a service sends and receives in order to perform a particular task.
an abstract grouping of messages
the invocation of a service task
A Service Provider is an agent that is capable of and empowered to perform the actions associated with a service.
A service requester is the entity that is responsible for requesting a service from a service provider.
The service requester is the entity that requires a certain function to be satisfied. From an architectural perspective, this is the agentthat is looking for and invoking or initiating an interaction with a service.
The semantics of a service is the contract between the service provider and the service requester that expresses the effect of invoking the service. A service semantics may be formally described in a machine readable form, identified but not formally defined or informally defined via an `out of band' agreement between the provider and the requester.
the contract between the service provider and the service requester concerning the effects and requirements pertaining to the use of a service
the service tasks that constitute the service.
in a service description
the intended effects of using a service
the relationship between the service provider and the service requester
Knowing the type of a data structure is not enough to understand the intent and meaning behind its use. For example, methods to deposit and withdraw from an account typically have the same type signature, but with a different effect. Semantics in web services provide formal documentation of meaning. Contracts describing semantics may be used in other web service features such as choreography.
The semantics of a service is fundamentally about the tasks that are encapsulated in the service. A given service may encapsulate a number of different tasks, each task consists of a goal and a process or action for achieving the goal.
A service task is a unit of activity associated with a service. It is denoted by a pair: a goal and an action; the goal denotes the intended effect of the task and the action denotes the process by which the goal is achieved.
A task is an abstraction that encapsulates the intended effect of invoking a service.
A task is associated with a goal — a predicate that should be satisfied on successful completion of the task
A task is associated with a procedure (or action) that is used to achieve the task.
The actions associated with a task may be public, as in the exchange of messages between service providers and requesters; or it may be private, as in the calculation of a formula or in the update of a shared resource. In the case of a service oriented architecture only the public aspects of a task are important, and these are expressed entirely in terms of the messages exchanged.
The Resource Oriented Model focuses on those aspects of the architecture that relate to resources, and the service model associated with manipulating resources. It builds on the Service Oriented Model, primarily by developing the service model associated with resources and common actions associated with manipulating them.
A key role of this part of the architecture is to explicate the Web itself, and how it relates to Web services. The ROM does so by showing how resources are an independent concept, and yet how the manipulation of resources is an instance of a Service Model: with particular kinds of services and identified actions on resources.
The concepts and relationships in the ROM are illustrated in the figure:

DELETE is a standard action associated with resources. It is used by an agent to request that a resource be removed and no longer accessible.
the resource such that its representation is no longer available to any subsequent GET action.
DELETE is a standard action associated with Web resources. Any service that realizes the Web model must realize the DELETE action — although security and other concerns may still prevent a requestor successfully using DELETE.
Of course, how a resource is DELETEd may vary; some systems may maintain permanent records of all resources; others may completely remove a DELETEd resource. The key change in state after a successful DELETE is that no subsequent GET on the DELETEd resource is successful (accessing an archived resource is conceptually distinct from accessing the resource itself)..
Discovery is the act of locating a machine-processable description of a Web service that may have been previously unknown and that meets certain functional criteria. [WS Glossary]
an act
by an agent, or by an end-user
using a discovery service
are a direct interaction between the owners of the service requester and service provider
of matching a set of functional and other criteria with a set of descriptions.
There are various means by which discovery can be performed. Various entities, e.g. human end users or agents may initiate discovery. Service requesters may find services and obtain binding information (in the service descriptions) during development for static binding, or during execution for dynamic binding. For statically bound service requesters, using service discovery is optional, as a service provider can send the description directly to service requesters. Likewise, service requesters can obtain a service description from other sources besides a service registry, such as a local file system, FTP site, URL, or WSIL document.
A discovery service is a service that performs discovery; of particular interest are discovery services that permit the discovery of Web services.
a service
publish service descriptions
search for service descriptions
automatically or under human guidance
A discovery service is used by agents and service owners to publish and search for service descriptions.
The discovery of a service takes place at different times in the overall life-cycle of a service. At one extreme, discovery is vestigial as a new service may be built directly in terms of an existing service; at the other extreme, a service requester dynamically searches for a service provider that may fulfil its requirements immediately prior to the actual service initiation.
GET is a standard action associated with resources. It is used by an agent to access a representation of a resource.
an action defined relative to resources
returns a representation of the resource
An identifier is a preferably opaque string of bits that may be used to associate with a resource
Identifiers are used to identify resources. In the architecture we use Uniform Resource Identifiers [RFC 2396] to identify resources.
We have a strong preference that any concrete realization of identifiers does not exhibit any structure. The reason is that an identifier's primary role is to permit multiple references to a resource to be viewed as equivalent.
An opaque string means, in this context, that identifies do not have a structure that is discernible to an outside observer. However, identifiers MAY have internal structure that is relevant to the originator of the identifier; for example, an identifier in a challenge-response interchange may be opaque to the responder but not to the challenger.
PUT is a standard action associated with resources. It is used by an agent to request that a resource be updated in accordance with a resource representation.
an action defined relative to resources
resources to be consistent with a supplied representation
A representation is a data object that denotes a resource state, and is the vehicle for conveying the meaning of a resource. A resource is an abstraction for which there is a conceptual mapping to a (possibly empty) set of representations.
a data object
the state of a resource