Web Services Architecture Guide
Web Services Architecture Guide
Abstract
This document defines the Web Services Architecture. It identifies the functional
components and defines the relationships among those components to effect the desired
properties of the overall architecture.
1 Introduction
1.1 Purpose of the Web Service Architecture
The architecture does not attempt to specify how Web services are implemented, and
imposes no restriction on how Web 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.
While the concepts and relationships represent an enumeration of the architecture, the
stakeholders' perspectives approaches from a different viewpoint: 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.
The key stakeholder's perspectives supported in this document reflect the major goals of
the architecture itself: interopability, extensibility, security, Web integration,
implementation and manageability.
For the purpose of this Working Group and this architecture, and without prejudice
toward other definitions, we will use the following definition:
A Web service is an abstract notion that must be implemented by a concrete agent. (See
Figure 1-1) The agent is the concrete piece of software or hardware that sends and
receives messages, while the service is the resource characterized by 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) with the same functionality. 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-1: Basic Architectural Roles.)
Note:
A word on terminology: Many documents use the term service provider to refer to the
provider entity and/or provider agent. Similarly, they may use the term service requester
to refer to the requester entity and/or requester agent. However, since these terms are
ambiguous -- sometimes referring to the agent and sometimes to the person or
organization that owns the agent -- this document prefers the terms requester entity,
provider entity, requester agent and 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.
(This is a slight simplification that will be explained further in 3.3 Using Web Services.)
The mechanics of the message exchange are documented in a Web service description
(WSD). (See Figure 1-1) The WSD is a machine-processable specification of the Web
service's interface, written in WSDL. 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 at which a
provider agent can be invoked, and may provide some information about the message
exchange pattern that is expected. In essence, the service description represents an
agreement governing the mechanics of interacting with that service. (Again this is a slight
simplification that will be explained further in 3.3 Using Web Services.)
1.4.4 Semantics
The semantics of a Web service is the shared expectation about the behavior of the
service, in particular in response to messages that are sent to it. In effect, this is the
"contract" between the requester entity and the provider entity regarding the purpose and
consequences of the interaction. 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, and it may be a legal
agreement or an informal (non-legal) agreement. (Once again this is a slight
simplification that will be explained further in 3.3 Using Web Services.)
There are many ways that a requester entity might engage and use a Web service. In
general, the following broad steps are required, as illustrated in Figure 1-1: (1) the
requester and provider entities become known to each other (or at least one becomes
know to the other); (2) the requester and provider entities somehow agree on the service
description and semantics that will govern the interaction between the requester and
provider agents; (3) the service description and semantics are realized by the requester
and provider agents; and (4) the requester and provider agents exchange messages, thus
performing some task on behalf of the requester and provider entities. (I.e., the exchange
of messages with the provider agent represents the concrete manifestation of interacting
with the provider entity's Web service.) These steps are explained in more detail in 3.4
Web Service Discovery. Some of these steps may be automated, others may be
performed manually.
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 nonetheless is important to Web services.
2.2.2 Relationships
An agent is
a computational resource
This statement makes an assertion, in this case about the nature of agents. Many such
statements are descriptive, others are definitive:
A message has
a message sender
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. Even if a service is used anonymously, the sender has an
identifier but it is not possible to associate this identifier with an actual person or
organization.
2.2.3 Concept Maps
Many of the concepts in the architecture are illustrated with concept maps. A concept
map is an informal, graphical way to illustrate key concepts and relationships. For
example the diagram:
shows three concepts which are related in various ways. Each box represents a concept,
and each arrow (or labeled arc) represents a relationship.
The merit of a concept map is that it allows rapid navigation of the key concepts and
illustrates how they relate to each other. It should be stressed however that these diagrams
are primarily navigational aids; the written text is the definitive source.
2.2.4 Model
A model is a coherent subset of the architecture that typically revolves around a particular
aspect of the overall architecture. Although different models share concepts, it is usually
from different points of view; the major role of a model is to explain and encapsulate a
significant theme within the overall Web services architecture.
For example, the Message Oriented Model focuses and explains Web services strictly
from a message passing perspective. In particular, it does not attempt to relate messages
to services provided. The Service Oriented Model, however, lays on top of and extends
the Message Oriented Model in order to explain the fundamental concepts involved in
service - in effect to explain the purpose of the messages in the Message Oriented Model.
2.2.5 Conformance
This architecture has four models, illustrated in Figure 2-2. Each model in Figure 2-2 is
labeled with what may be viewed as the key concept of that model.
The essence of the message model revolves around a few key concepts illustrated
above: the agent that sends and receives messages, the structure of the message in
terms of message headers and bodies and the mechanisms used to deliver
messages. Of course, there are additional details to consider: the role of policies
and how they govern the message level model. The abridged diagram shows the
key concepts; the detailed diagram expands on this to include many more
concepts and relationships.
The Service Oriented Model 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.
Figure 2-4. Simplified Service Oriented Model
The Service Oriented Model is the most complex of all the models in the
architecture. However, it too revolves around a few key ideas. A service is
realized by an agent and used by another agent. Services are mediated by means
of the messages exchanged between requester agents and provider agents.
A very important aspect of services is their relationship to the real world: services
are mostly deployed to offer functionality in the real world. We model this by
elaborating on the concept of a service's owner — which, whether it is a person or
an organization, has a real world responsibility for the service.
Finally, the Service Oriented Model makes use of meta-data, which, as described
in 3.1 Service Oriented Architecture, is a key property of Service Oriented
Architectures. This meta-data is used to document many aspects of services: from
the details of the interface and transport binding to the semantics of the service
and what policy restrictions there may be on the service. Providing rich
descriptions is key to successful deployment and use of services across the
Internet.
The Resource Oriented Model focuses on resources that exist and have owners.
Figure 2-5. Simplified Resource Oriented Model
The resource model is adopted from the Web Architecture concept of resource.
We expand on this to incorporate the relationships between resources and owners.
The Policy Model focuses on constraints on the behavior of agents and services.
We generalize this to resources since policies can apply equally to documents
(such as descriptions of services) as well as active computational resources.
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 and receivers and how messages are transmitted.
2.3.1.1.1 Definition
2.3.1.1.3 Explanation
Typically, the form of the address information will depend of the particular message
transport. In the case of an HTTP message transport, the address information will take the
form of a URL.
The precise method that a message sender uses to convey address information will also
depend on the transport mechanism used. On occasion, the address information may be
provided as additional arguments to the invoking procedure. Or the address information
may be located within the message itself; typically in the message envelope.
2.3.1.2.1 Definition
A delivery policy is a policy that constrains the methods by which messages are delivered
by the message transport.
2.3.1.2.2 Relationships to other elements
Delivery policies are those policies that relate to the delivery of messages.
2.3.1.3 Message
2.3.1.3.1 Definition
A message is the basic unit of data sent from one Web services agent to another in the
context of Web services.
2.3.1.3.2 Relationships to other elements
A message represents the data structure passed from its sender to its recipients. The
structure of a message is defined in a service description.
The main parts of a message are its envelope, a set of zero or more headers, and the
message body. The envelope serves to encapsulate the component parts of the message
and it serves as a well-known location for message transport services to locate necessary
addressing information. The header holds ancillary information about the message and
facilitates modular processing. The body of the 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 document. 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.
2.3.1.4.1 Definition
A message body is the structure that represents the primary application-specific content
that the message sender intends to deliver to the message recipient.
2.3.1.4.2 Relationships to other elements
2.3.1.4.3 Explanation
The message body provides a mechanism for transmitting information to the recipient of
the message. The form of the message body, and other constraints on the body, may be
expressed as part of the service description.
In many cases, the precise interpretation of the message body will depend on the message
headers that are in the message.
2.3.1.5.1 Definition
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 also be realized by the underlying protocol. For example, HTTP/1.1
allows one to correlate a request with its response.
2.3.1.6.1 Definition
A message envelope is the structure that encapsulates the component parts of a message:
the message body and the message headers.
2.3.1.6.2 Relationships to other elements
a message envelope may contain address information about the intended recipients of its
associated message a message envelope contains the message body.
a message envelope contains the message headers.
2.3.1.6.3 Explanation
Issue (message_with_address):
There is an unresolved issue here. A message somehow must be associated with its
destination address. This combination of the message with its destination address seems
to be a significant architectural concept, yet SOAP does not require that the address be
included in the message header.
Resolution:
None recorded.
The message envelope may contain information needed to actually deliver messages. If
so, 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 metadata that may be present in an envelope includes security information to allow
the message to be authenticated and quality of service information.
2.3.1.7.1 Definition
a unique identifier
message correlation
a service invocation
2.3.1.7.3 Explanation
Issue (mep_vs_chor):
The precise difference between an MEP and a choreography is unresolved. Some view
MEPs as being atomic patterns, and a choreography as including composition of patterns.
Also, a choreography generally describes patterns that include application semantics
(choreography = MEPs + application semantics), whereas an MEP is devoid of
application semantics. Finally, there is usually a difference in scale between an MEP and
a choregraphy: A choreography often makes use of MEPs as building blocks.
Resolution:
None recorded.
Messages that are instances of an MEP are correlated, either explicitly or implicitly. The
exchanges may be synchronous or asynchronous.
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.
Some protocols may natively support certain MEPs, e.g., HTTP natively supports
request-response. In other cases there is may be additional glue needed 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.
An MEP is not necessarily limited to capturing only the inputs and outputs of a single
service. Consider the pattern:
3. agent A uses another instance of an MEP to communicate with C but gets a reply
only after C has processed (2).
This 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.
2.3.1.8.1 Definition
A message header is the part of the message that contains information about a specific
aspect of the message.
2.3.1.8.2 Relationships to other elements
a message envelope
Editorial note
The "is-a" relationship here is used in a different way than elsewhere in the
document.
a message header may identify
a service role, which denotes the kind of processing expected for the header.
The primary function of headers is to facilitate the modular processing of the message,
although they can also be used to support routing and related aspects of message
processing. 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.
Message headers may be processed independently of the message body, each message
header may have an identifying service role that indicates the kind of processing that
should be performed on messages with that header. Each message may have several
headers, each potentially identifying a different service role.
Although many headers will relate to infrastructure facilities, such as security, routing,
load balancing and so on; it is also possible that headers will be application specific. For
example, a purchase order processing Web service may be structured into layers;
corresponding to different functions within the organization. These stakeholders may
process headers of different messages in standardized ways: the customer information
may be captured in one standardized header, the stock items by a different standardized
header and so on.
2.3.1.9.1 Definition
a message receiver is
a agent
a message receiver is
Messages may 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.
Often a specific message receiver, the ultimate recipient, is identified as the final
recipient of a message. The ultimate recipient will be responsible for completing the
processing of the message.
2.3.1.10.1 Definition
Message reliability is the degree of certainty that a message will be delivered and that
sender and receiver will both have the same understanding of the delivery status.
2.3.1.10.2 Relationships to other elements
message reliability is
a transport mechanism
2.3.1.10.3 Explanation
The goal of reliable messaging is to both reduce the error frequency for messaging and to
provide sufficient information about the status of a message delivery. Such information
enables a participating agent to make a compensating decision when errors or less than
desired results occur. High level correlation such as "two-phase commit" is needed if
more than two agents are involved. Note that in a distributed system, it is theoretically
not possible to guarantee correct notification of delivery; however, in practice, simple
techniques can greatly increase the overall confidence in the message delivery.
It is important to note that a guarantee of the delivery of messages alone may not improve
the overall reliability of a Web service due to the need for end-to-end reliability. (See
"End-to-End Arguments in System Design".) It may, however, reduce the overall cost of a
Web service.
Message reliability may be realized with a combination of message receipt
acknowledgement and correlation. In the event that a message has not been properly
received and acted upon, the sender may attempt a resend, or some other compensating
action at the application level.
2.3.1.11.1 Definition
a message sender is
an agent
a message sender is
A message sender is an agent that transmits a message to another agent. Although every
message has a sender, the identity of the sender may not be available to others 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.
2.3.1.12.1 Definition
a message sequence is
2.3.1.13.1 Definition
a message transport is
The message transport is the actual mechanism used to deliver messages. Examples of
message transport include HTTP over TCP, SMTP, message oriented middleware, and so
on.
The responsibility of the message transport is to deliver a message from a sender to one
or more recipient, i.e. transport a SOAP Infoset from one agent to another, possibly with
some implied semantics (e.g. HTTP methods semantics).
Message transports may provide different features (e.g. message integrity, quality of
service guaranties, etc.).
For a message transport to function, the sending agent must provide the address of the
recipient.
The primary purpose of the SOM is to explicate the relationships between an agent and
the services it provides and requests. 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 Figure 2-8:
2.3.2.1 Action
2.3.2.1.1 Definition
An action, for the purposes of this architecture, is any action that may be performed by an
agent, possibly as a result of receiving a message, or which results in sending a message
or another observable state change.
2.3.2.1.2 Relationships to other elements
An action may be
An action may be
At the core of the concept of service is the notion of one party performing action(s) at the
behest of another party. From the perspective of requester and provider agents, an action
is typically performed by executing some fragment of a program.
In the WSA, the actions performed by requester and provider agents 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 in scope.
2.3.2.2 Agent
2.3.2.2.1 Definition
An agent is
a computational resource
An agent has
Agents are programs that engage in actions on behalf of someone or something else. For
our purposes, agents realize and request Web services. In effect, software agents are the
running programs that drive Web services — both to implement them and to access them.
Software agents are also proxies for the entities that own them. This is important as many
services involve the use of resources which also have owners with a definite interest in
their disposition. For example, services may involve the transfer of money and the
incurring of legal obligations as a result.
We specifically avoid any attempt to govern the implementation of agents; we are only
concerned with ensuring interopability between systems.
2.3.2.3 Choreography
2.3.2.3.1 Definition
A choreography defines the sequence and conditions under which multiple cooperating
independent agents exchange messages in order to perform a task to achieve a goal state.
Editorial note
This is a different level of abstraction from the definition used by the W3C Web Services
Choreography Working Group.
A choreography uses
A choreography defines
A choreography pertains to
a given task
A choreography defines
2.3.2.4 Capability
2.3.2.4.1 Definition
a capability has a
a capability has a
a capability can be
a capability can be
a service description
2.3.2.4.3 Explanation
2.3.2.5.1 Definition
A goal state is a state of some service or resource that is desireable from some person or
organization's point of view.
2.3.2.5.2 Relationships to other elements
a goal state is
a state of the real world, which includes the state of relevant resources
a goal state is
Goal states are associated with tasks. Tasks are the unit of action associated with services
that have a measurable meaning. Typically measured from the perspective of the owner
of a service, a goal state is characterized by a predicate that is true of that state — for
example, a book selling service may have as its goal state that a book has been purchased
by a legitimate customer.
2.3.2.6.1 Definition
A provider agent is an agent that is capable of and empowered to perform the actions
associated with a service on behalf of its owner — the provider entity.
2.3.2.6.2 Relationships to other elements
a provider agent is
a provider entity
2.3.2.6.3 Explanation
The provider agent is the software agent that realizes a Web service by performing tasks
on behalf of its owner — the provider entity.
A given service may be offered by more than one agent, especially in the case of
composite services, and a given provider agent may realize more than one Web service.
2.3.2.7.1 Definition
The provider entity is the person or organization that is providing a Web service.
2.3.2.7.2 Relationships to other elements
a provider entity
is a person or organization
a provider entity
a provider agent
2.3.2.7.3 Explanation
The provider entity is the person or organization that is offering a Web service. The
provider agent acts on behalf of the provider entity that owns it.
2.3.2.8.1 Definition
A requester agent is a software agent that wishes to interact with a provider agent in order
to request that a task be performed on behalf of its owner — the requester entity.
2.3.2.8.2 Relationships to other elements
a requester agent is
an agent
a service
a requester entity
2.3.2.8.3 Explanation
The requester agent is the software agent that requires a certain function to be performed
on behalf of its owner — the requester entity. From an architectural perspective, this is
the agent that is looking for and invoking or initiating an interaction with a provider
agent.
2.3.2.9.1 Definition
The requester entity is the person or organization that wishes to use a provider entity's
Web service.
2.3.2.9.2 Relationships to other elements
a requester entity
is a person or organization
a requester agent
2.3.2.9.3 Explanation
The requester entity is the person or organization that wishes to make use of a Web
service. The requester entity is the counterpart to the provider entity.
2.3.2.10 Service
2.3.2.10.1 Definition
a service is a
resource
a service performs
a service has
a service description
a service has a
service interface
a service has
service semantics
a service has
an identifier
a service has
a service semantics
a service has
a service is owned by
a person or organization.
a service is provided by
a person or organization.
a service is realized by
a provider agent.
a service is used by
a requester agent.
2.3.2.10.3 Explanation
The critical distinction of a Web service, compared to other Web resources, is that Web
services do not necessarily have a representation; however, they are associated with
actions.
Issue (ws_get):
None recorded.
For a Web service to be compliant with this architecture there must be sufficient service
descriptions associated with the service to enable its use by other parties. Ideally, a
service description will give sufficient information so that an automatic agent may not
only use the service but also decide if the service is appropriate; that in turn implies a
description of the semantics of the service.
Web services are focused on actions. It is convenient, for the purposes of characterizing
their semantics, to capture this in terms of tasks. The semantics of any computational
system is bound with the behavior of the system: and the intended semantics is bound
with some desired behavior. Tasks combine the concept of action with intention: i.e., Web
services are conventionally invoked with a given purpose in mind. The purpose can be
expressed as an intended goal state: such as a book being delivered or a temperature
reading being taken.
2.3.2.11.1 Definition
A service description is a set of documents that describe the interface to and semantics of
a service.
2.3.2.11.2 Relationships to other elements
a service description is
a service description is
a machine-processable description of the service's interface
A service description contains the details of the interface and, potentially, the expected
behavior of the service. This includes its data types, operations, transport protocol
information, and address. It could also include categorization and other metadata to
facilitate discovery and utilization. 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 requester agents to automatically discover
appropriate provider agents in those case where requester agents are able to make suitable
choices.
2.3.2.12.1 Definition
A service interface is the abstract boundary that a service exposes. It defines the types of
messages and the message exchange patterns that are involved in interacting with the
service, together with any conditions implied by those messages.
2.3.2.12.2 Relationships to other elements
A service interface defines the different types of messages that a service sends and
receives, along with the message exchange patterns that may be used.
2.3.2.13 Service Intermediary
2.3.2.13.1 Definition
A service intermediary is
a service.
A service intermediary is a specific kind of service which typically acts as a kind of filter
on messages it handles. Normally, intermediaries do not consume messages but rather
forward them to other services. Of course, intermediaries do often modify messages but, it
is of the essence that from some application specific perspective they do not modify the
meaning of the message.
Of course, if a message is altered in any way, then from some perspectives it is no longer
the same message. However, just as a paper document is altered whenever anyone writes
a comment on the document, and yet it is still the same document, so an intermediary
modifies the messages that it receives, forwarding the same message with some changes.
Coupled with the concept of service intermediary is the service role is adopts. Typically,
this involves one or more of the messages' headers rather than the bodies of messages.
The specification of the header is coupled with the permissable semantics of the
intermediary should make it clear to what extent the messages forwarded by an
itnermediary are the same message and what modifications are permitted.
There are a number of situations where additional processing of messages is required. For
example, messages that are exchanged between agents within an enterprise may not need
encryption; however, if a message has to leave the enterprise then good security may
suggest that it be encrypted. Rather than burden every software agent with the means of
encrypting and decrypting messages, this functionality can be realized by means of an
intermediary. The main responsiblity of the software agents then becomes ensuring that
the messages are routed appropriately and have the right headers targetted at the
appropriate intermediaries.
2.3.2.14.1 Definition
a service role is
a service owner.
2.3.2.14.3 Explanation
A service role is an intermediate abstraction between service and task. A given message
that is received by a service may involve processing associated with several service roles.
Similarly, messages emitted may also involve more than one service role.
We can formalize the distinction by noting that a service role is typically associated with
a particular property of messages. For ultimate processing, the service role may be to
determine some final disposition of messages received. However, other service roles may
be associated with more generic properties of messages — such as their encryption, or
whether they reference a customer or inventory item.
Service roles identify the points of interest that a service owner has in the processing of
messages. As such, they are established by the party that offers in the service.
2.3.2.15.1 Definition
The semantics of a service is the behavior expected when interacting with the service.
The semantics expresses a contract (not necessarily a legal contract) between the provider
entity and the requester entity. It expresses the intended real-world 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 entity and the requester entity.
2.3.2.15.2 Relationships to other elements
a service semantics is
the contract between the provider entity and the requester entity concerning the
effects and requirements pertaining to the use of a service
in a service description
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. The effects of the operations are
the semantics of the operation. It is good practice to be explicit about the intended effects
of using a Web service; perhaps even to the point of constructing a machine readable
description of the semantics of a service.
Machine processable semantic descriptions provide the potential for sophisticated usage
of Web services. For example, by accessing such descriptions, a requester agent may
autonomously choose which provider agent to use.
Apart from the expected behavior of a service, other semantic aspects of a service include
any policy restrictions on the service, the relationship between the provider entity and the
requester entity, and what manageability features are associated with the service.
2.3.2.16.1 Definition
A service task is an action or combination of actions that is associated with a desired goal
state. Performing the task involves executing the actions, and is intended to achieve a
particular goal state.
2.3.2.16.2 Relationships to other elements
a service task is
service interface
2.3.2.16.3 Explanation
Tasks are associated with goal states — characterized by predicates that are satisfied on
successful completion.
The performance of a task is made observable by the exchange of messages between the
requester agent and the provider agent. The specific pattern of messages is what defines
the choreography associated with the task.
In addition to exchanged messages, there may be other private actions associated with a
task. For example, in a database update task, the task may be signaled by an initiating
message and a completion message, which are public, and the actual database update,
which is typically private.
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.
Tasks represent a useful unit in modeling the semantics of a service and indeed of a
service role — a given service may consist of a number of tasks.
The ROM focuses on the key features of resources that are relevant to the concept of
resource, independent of the role the resource has in the context of Web services. Thus
we focus on issues such as the ownership of resources, policies associated with resources
and so on. Then, by virtue of the fact that Web services are resources, these properties are
inherited by Web services.
We illustrate the basic concepts and relationships in the ROM in Figure 2-9:
2.3.3.1 Discovery
2.3.3.1.1 Definition
Discovery is the act of locating a machine-processable description of a Web service-
related resource that may have been previously unknown and that meets certain
functional criteria. It involves matching a set of functional and other criteria with a set of
resource descriptions. The goal is to find an appropriate Web service-related resource.
[WS Glossary]
2.3.3.1.2 Relationships to other elements
Discovery is
Discovery involves
matching a set of functional and other criteria with a set of resource descriptions.
by an agent, or by an end-user
In the context of Web services, the resources being discovered are usually service
descriptions. If a requester entity does not already know what service it wishes to engage,
the requester entity must discover one. There are various means by which discovery can
be performed. Various things — human end users or agents — may initiate discovery.
Requester entities may find service descriptions during development for static binding, or
during execution for dynamic binding. For statically bound requester agents, using
discovery is optional, as the service description might be obtained in other ways, such as
being sent directly from the provider entity to the requester entity, developed
collaboratively, or provided by a third party, such as a standards body.
2.3.3.2.1 Definition
A discovery service is
a service
A discovery service is used to
publish descriptions
by an agent
2.3.3.2.3 Explanation
A discovery service is used to publish and search for descriptions meeting certain
functional or semantic criteria. It is primarily intended for use by requester entities, to
facilitate the process of finding an appropiate provider agent for a particular task.
However, depending on the implementation and policy of the discovery service (3.4.2
Discovery: Registry, Index or Peer-to-Peer?), it may also be used by provider entities
to actively publish their service descriptions.
Although the resource model is general purpose, the most important resource for our
purposes is the Web service. Furthermore, the primary role of a discovery service is to
facilitate the discovery of Web services.
For dynamic discovery, the requester agent may interact directly with the discovery
service to find an appropriate provider agent to engage. For static discovery, a human
may interact with the discovery service through an appropriate software agent, such as a
browser.
The use of an automated discovery service is optional, since other means can be used to
enable a requester entity and provider entity to agree on the service description that will
govern the interaction. For example, the requester entity might obtain the service
description directly from the provider entity, the two parties might develop the service
description collaboratively, or, in some circumstances, the service description may be
created by the requester entity and dictated to the provider entity. (For example, a large
company may require its suppliers to provide Web services that conform to a particular
service description.) Likewise, a requester entity can obtain a service description from
other sources besides a discovery service, such as a local file system, FTP site, URL, or
WSIL document.
2.3.3.3 Identifier
2.3.3.3.1 Definition
a URI
an identifier identifies
Identifiers are used to identify resources. In the architecture we use Uniform Resource
Identifiers [RFC 2396] to identify resources.
Issue (urivsqname):
Should URIs be used to identify Web services components, rather than QNames?
Resolution:
None recorded.
2.3.3.4 Representation
2.3.3.4.1 Definition
representation
2.3.3.4.3 Explanation
Representations are data objects that reflect the state of a resource. A resource has a
unique identifier (a URI). Note that a representation of a resource need not be the same as
the resource itself; for example the resource asociated with the booking state of a
restaurant will have different representations depending on when the representation is
retrieved. A representation is usually retrieved by performing an HTTP "GET" on a URI.
2.3.3.5 Resource
2.3.3.5.1 Definition
A resource is defined by [RFC 2396] to be anything that can have an identifier. Although
resources in general can be anything, this architecture is only concerned with those
resources that are relevant to Web services and therefore have some additional
characteristics. In particular, they incorporate the concepts of ownership and control: a
resource that appears in this architecture is a thing that has a name, may have reasonable
representations and which can be said to be owned. The ownership of a resource is
critically connected with the right to set policy on the resource.
2.3.3.5.2 Relationships to other elements
a resource has
an identifier
a resource is owned by
a person or organization
Resources form the heart of the Web architecture itself. The Web is a universe of
resources that have URIs as identifiers, as defined in [RFC 2396].
2.3.3.6.1 Definition
A resource description is any machine readable data that may permit resources to be
discovered. Resource descriptions may be of many different forms, tailored for specific
purposes, but all resource descriptions must contain the resource's identifier.
2.3.3.6.2 Relationships to other elements
The precise contents of a resource description will vary, depending on the resource, on
the purpose of the description and on the accessibility of the resource. However, for our
purposes it is important to note that the description must contain the resource's identifier.
I.e., a description of the form: "the new resource that is owned by XYZ co." is not
regarded as a valid resource description because it does not mention the resource's
identifier.
The Policy Model focuses on those aspects of the architecture that relate to policies and,
by extension, security and quality of service.
Security is fundamentally about constraints; about constraints on the behavior on action
and on accessing resources. Similarly, quality of service is also about constraints on
service. In the PM, these constraints are modeled around the core concept of policy; and
the relationships with other elements of the architecture. Thus the PM is a framework in
which security can be realized.
However, there are many other kinds of constraints, and policies that are relevant to Web
services, including various application-level constraints.
2.3.4.1.1 Definition
An audit guard is a mechanism used on behalf of an owner that monitors actions and
agents to verify the satisfaction of obligations.
2.3.4.1.2 Relationships to other elements
a audit guard is a
a policy guard
Typically, an audit guard monitors the state of a resource or a service, ensuring that the
obligation is satisfied. It determines whether the associated obligations are satisfied.
2.3.4.2 Domain
2.3.4.2.1 Definition
A domain is an identified set of agents and/or resources that is subject to the constraints
of one of more policies.
2.3.4.2.2 Relationships to other elements
A domain is
A domain defines
2.3.4.3 Obligation
2.3.4.3.1 Definition
An obligation is a kind of policy that prescribes actions and/or states of an agent and/or
resource.
2.3.4.3.2 Relationships to other elements
an obligation is a
kind of policy
Not all obligations relate to actions. For example, an agent providing a service may have
an obligation to maintain a certain state of readiness. (Quality of service policies are often
expressed in terms of obligations.) Such an obligation is typically not discharged by any
of the obligee's actions; although an event (such as a certain time period expiring) may
discharge the obligation.
An obligation may continue to exist after its requirements have been met (for example, an
obligation to maintain a particular credit card balance), or it may be discharged by some
action or event.
2.3.4.4 Permission
2.3.4.4.1 Definition
A permission is a kind of policy that prescribes the allowed actions and states of an agent
and/or resource.
2.3.4.4.2 Relationships to other elements
a permission is a
type of policy
A permission is one of two fundamental types of policies. When an agent has permission
to perform some action, to access some resource, or to achieve a certain state, then it is
expected that any attempt to perform the action etc., will be successful. Conversely, if an
agent does not have the required permission, then the action should fail even if it would
otherwise have succeeded.
2.3.4.5.1 Definition
a policy guard
a permission guard is a
Typically, a permission guard sits between a resource or service and the requester of that
resource or service. In many situations, it is not necessary for a service to be aware of the
permission guard. For example, one possible role of a message intermediary is to act as a
permission guard for the final intended recipient of messages.
A permission guard acts by either enabling a requested action or access, or by denying it.
Thus, it is normally possible for permission policies to be proactively enforced.
2.3.4.6.1 Definition
A person or organization may be the owner of agents that provide or request Web
services.
2.3.4.6.2 Relationships to other elements
an agent
a domain
a person or organization may establish
The WSA concept of person or organization is intended to refer to the real-world people
that are represented by agents that perform actions on their behalf. All actions considered
in this architecture are ultimately rooted in the actions of humans.
2.3.4.7 Policy
2.3.4.7.1 Definition
a policy is a
an identifier
in a policy description
a capability
2.3.4.7.3 Explanation
There are many kinds of policies, some relate to accessing resources in particular ways,
others relate more generally to the allowable actions an agent may perform: both as
provider agents and as requester agents.
Although most policies relate to actions of various kinds, it is not exclusively so. For
example, there may be a policy that an agent must be in a certain state (or conversely may
not be in a particular state) in relation to the services it is requesting or providing.
Closely associated with policies are the mechanisms for establishing policies and for
enforcing them. This architecture does not model the former.
Policies have applications for defining security properties, quality of service properties,
management properties and even application properties.
2.3.4.8.1 Definition
a policy
2.3.4.8.3 Explanation
The policy description itself is not the policy, but it may define the policy and it may be
used to determine if the policy applies in a given situation.
Policy descriptions may include specific conditions, such as "agents of XXX Co. may
access files in directory FFF". They may also include more general rules, such as "if an
entity has the right to access files in the directory FFF, it also has the obligation to close
them after 20 seconds.".
2.3.4.9.1 Definition
2.4 Relationships
This section defines terms that appear in our architectural models but are not specific to
Web services or Web services architecture. However, they are defined here to help clarify
our use of these terms in this document.
2.4.1.1 Definition
The X is a Y relationship denotes the relationship between concepts X and Y, such that
every X is also a Y.
true of
contains
transitive
2.4.1.3 Explanation
Essentially, when we say that concept X is a Y we mean that every feature of Y is also a
feature of X. Note, however, that since X is presumably a more specific concept than Y,
the features of X may also be more specific variants of the features of Y.
For example, in the service concept, we state that every service has an identifier. In the
more specific Web service concept, we note that a Web service has an identifier in the
form of a URI identifier.
2.4.2.1 Definition
The concept Y describes X if and only if Y is an expression of some language L and that
the values of Y are instances of X.
Assuming that Y describes X, then: if Y is a valid expression of L, then the values of Y are
instances of concept X
2.4.2.3 Explanation
Essentially, when we say that Y describes concept X we are saying that the expression Y
denotes instances of X.
For example, in the service description concept, we state that service descriptions are
expressed in a service description language. That means that we can expect legal
expressions of the service description language to be instances of the service description
concept.
2.4.3.1 Definition
Saying that "the concept X has a Y relationship" denotes that every instance of X is
associated with an instance of Y.
2.4.3.3 Explanation
When we say that "concept X has a Y" we mean that whenever we see an X we should
also see a Y
For example, in the Web service concept, we state that Web services have URI identifiers.
So, whenever the Web service concept is found, we can assume that the Web service
referenced has an identifier. This, in turn, allows implementations to use identifiers to
reliably refer to Web services. If a given Web service does not have an identifier
associated with it, then the architecture has been violated.
2.4.4.1 Definition
The relationship "X owns Y" denotes the relationship between concepts X and Y, such that
every X has the right and authority to control, utilize and dispose of Y.
2.4.4.2 Relationships to other elements
policy
X has the right to establish policies that constrain agents and other entities in their
use of Y
disposal
X has the right to transfer some or all of his rights with respect to Y to another
entity.
transitive
2.4.4.3 Explanation
Essentially, when we say that X owns Y we mean that X has a significant set of rights with
respect to Y, and that those rights are transferrable.
In general, ownership is partial, and there may be many entities that have rights with
respect to some service or resource.
2.4.5.1 Definition
The statement "concept X is realized as Y" denotes that the concept X is an abstraction of
the concept Y. An equivalent view is that the concept X is implemented using Y.
implemented
reified
2.4.5.3 Explanation
When we say that the concept or feature X is realized as Y, we mean that Y is an
implementation or reification of the concept X. I.e., if Y is a valid concept of a system
then we have also ensured that the concept X is valid of the same system.
For example, in the correlation feature, we state that message correlation requires that we
associate identifiers with messages. This can be realized in a number of ways —
including the identifier in the message header, message body, in a service binding and so
on. The message identifier is a key to the realization of message correlation.
3 Stakeholder's Perspectives
This section examines the architecture from various perspectives, each perspective
representing one coherent view of the architecture. For example, security represents one
major stakeholder's perspective of the architecture itself.
A distributed system consists of diverse, discrete software agents that must work together
to perform some tasks. Furthermore, the agents in a distributed system do not operate in
the same processing environment, so they must communicate by hardware/software
protocol stacks over a network. This means that communications with a distributed
system are intrinsically less fast and reliable than those using 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 [Dist Comp].
Distributed object systems are distributed systems in which the semantics of object
initialization and method invocation are exposed to remote systems by means of a
proprietary or standardized mechanism to broker requests across system boundaries,
marshall and unmarshall method argument data, etc. Distributed objects systems typically
(albeit not necessarily) are characterized by objects maintaining a fairly complex internal
state required to support their methods, a fine grained or "chatty" interaction between an
object and a program using it, and a focus on a shared implementation type system and
interface hierarchy between the object and the program that uses it.
Distributed object systems have a number of architectural challenges. [Dist Comp] and
others point out:
In general SOA and Web services are most appropriate for applications:
That must operate over the Internet where reliability and speed cannot be
guaranteed;
Where there is no ability to manage deployment so that all requesters and
providers are upgraded at once;
Where an existing application needs to be exposed for use over a network, and
can be wrapped as a Web service.
The World Wide Web operates as a networked information system that imposes several
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 (REST) has been proposed by Roy Fielding and has
inspired both the W3C Technical Architecture Group's architecture document [Web Arch]
and many who see it as a model for how to build Web services [Fielding]. The REST Web
is the subset of the WWW (based on HTTP) in which agents provide uniform interface
semantics -- essentially create, retrieve, update and delete -- rather than arbitrary or
application-specific interfaces, and manipulate resources only by the exchange of
representations. Furthermore, the REST interactions are "stateless" in the sense that the
meaning of a message does not depend on the state of the conversation.