We note that an alternative treatment of operation 3 is possible, albeit
with some extra work, that avoids the
need to transfer the entire state document. A new operation (for example,
GetEPRtoPart) is defined that requests
that a new state representation be exposed, through a different EPR, representing parts of the original state representation. The Get() operation is then
applied to this new EPR. WS-Transfer
applications (and higher-level specifications such as WS-Management)
often use this approach to address the
lack of support for partial state access
in WS-Transfer.
Operation 8 is sent directly to the
job factory service, which is assumed
to have access to information about all
active jobs, as in the WS-RF case.
HTTP implementation. Table 5
summarizes the syntax of an HTTP
implementation. Note that operation 5
can alternatively be addressed via some
custom encoding or by using a system
such as SMTP, Jabber, SMS, or Atom.
HTTP DELETE cannot take any content, so there is no way to specify that a
set of jobs (operation 8) can be deleted
by using the HTTP DELETE message,
except in the case when we delete all
jobs in some predefined group (for example, “HTTP DELETE http://grid.org/
Bloggs/Jobs” to delete all jobs created
by Bloggs).
Note that whereas HTTP defines
all the verbs used, the structure of the
URIs and the format and semantics
of the documents exchanged in order
to implement the job service’s operations are application specific. Thus,
while the URIs appear to convey some
semantic information based on their
structure (for example, a /status at the
end of a particular job URI may be interpreted by a human as the identifier
of the status resource), this is an application-specific convention.
No-conventions/Web services implementation. Since in this approach
we assume no defined state management conventions with widely agreed
semantics, each application domain
is expected to define interactions that
meet its own requirements. Table 6
summarizes a potential implementation of the job management service in
this style, using SOAP messaging.
Because of the nature of the example chosen, all operations are defined
it is unwieldy
to keep talking
about “modeling
a projection of
underlying system
state,” so we use
the shorthand
“modeling state.”
it is important
to bear in mind,
however, the reality
of what could be
going on behind the
boundaries of
a system with
which an interaction
takes place.
as request-response message exchanges. The CreateJob message exchange
returns an identifier as the job handle.
The returned job identifier may be a
globally unique URI (for example, a
URN) that can be accepted by multiple
job services. Metadata about it (for example, the job services that “know”
about it) may be discovered from reg-istries. Examples of this approach to
identifying resources include the Life
Science Identifier (LSID), International
Virtual Observatory Alliance (IVOA)
identifier, and Amazon Standard Identification Number (ASIN). Thus, the job
identifier may become a technology-independent handle that can also be
used with other technologies (for example, a Jini or CORBA interface to the
same service). A client receiving such a
job handle can then pass it to the job
management service.
Discussion
The four approaches do not differ
greatly in terms of what they actually
do. All send essentially the same messages, with the same content, across
the network. For example, a request
to destroy a particular job will in each
case be directed to a network endpoint
via an HTTP PUT, and will contain the
name of the operation to be performed,
plus some data indicating the job that
should be destroyed. The approaches
vary only in how these different components are included in a message, an issue that may have implications for how
messages can be processed and routed
but that has no impact on how services
are implemented.
At the same time, there clearly are
significant differences among the approaches in terms of, for example,
their use of conventions, the underlying protocols, and the tooling available
to support their use. We summarize
here important arguments that have
been made on these topics. The characterizations of the various positions
are our own.
The value of convention. Proponents
of the WS-RF and WS-Transfer approaches argue that creating, accessing, and managing state involve a set of
common patterns that can usefully be
captured in a set of specifications, thus
simplifying the design, development,
and maintenance of applications that
use those patterns. For example, in the