style focuses on the exchange of openly exposed data models, and provides
only a small and fixed number of access methods.
metamodels for RPc and Rest
This article focuses on resource-orientation as the underlying architectural
style of an IT architecture. For function-orientation, the design of APIs
usually follows similar guidelines as
API design in system programming; 3
these APIs are function-oriented and
provide access to the entities that are
locally implemented by the API provider. The “data model” of these APIs
usually is rather simple; it is a set of
simple types that can be used as types
of input and output parameters of a
function. The complexity of such an
API thus lies in a concrete API design
itself; that is, in the data model of the
objects providing the functions, not
in the metamodel of the API function
definitions.
In contrast, with resource orientation, the situation is reversed. In this
approach, the main focus is on document exchange, and the structure of
these documents is usually much more
elaborate than a function signature.
On the surface, this difference typically manifests itself by a large number of
functions with relatively simple signatures in function-oriented interfaces.
On the other hand, resource-oriented
interfaces typically define far fewer interactions, but they are coarse-grained
ones that have more elaborate signatures in the form of complex resource
representations.
Resource-orientation thus often
needs more elaborate metamodels to
define these resource representations.
The selection of the metamodel is an
important decision in the context of
resource-orientation. Depending on
the application, document design can
come up with very different requirements for the data model; the spectrum of document models that are
appropriate for application scenarios
can range from simply structured
regular sets of name/value pairs, to
highly structured narrative document
types mixing natural language with
typed data, with a continuum of intermediary and mixed forms in between.
The levels of abstraction and granularity, the robustness of the semantic
specification, and the extent to which
standard conceptual components are
reused in this data model are critical
document design matters, 2 but they
are not the central concerns of this
article and will not be discussed further.
Our first important observation
is that the selection of an API metamodel is of greater importance in
resource-orientation than it is in function-orientation. Metamodels for resource-orientation typically are more
complex, or at least span a larger range
of possible requirements for concrete
application scenarios, than in the case
of function-orientation.
Another important observation is
that on the Web, there often is no one
true data model for a given application scenario. Instead, peers exchange
representations of resources, which is
the reason why the architectural style
underlying the Web is called
Representational State Transfer (REST). 1 In
REST, when two peers communicate,
three models are involved: the inter-
nal model of one peer, the representation model that is used for communications, and the internal model
of the other peer. It may be the case
that both peers use the same internal
model, but this is not a requirement
of the Web. As long as peers share a
common understanding of the intermediary representation model, they
can interact.
One of the fundamental differences between function-orientation and
REST is that REST’s goal is not integration, but collaboration. Function-orientation provides function-based
access to a model that is implemented
on the provider side; this model often is not exposed, and it is assumed
that it is the model shared by all participants. On the other hand, REST
provides an explicit representation of
a model that is exchanged as a whole;
and while participants are free to use
that model for their implementation, they are also free to map it to a
model they see as a better fit for their
processing needs. When a model is