Documentos de Académico
Documentos de Profesional
Documentos de Cultura
REST
Cedric Ulmer Yohann Bonillo Gabriel Serme
SAP Research SAP Research SAP Research
Sophia Antipolis, France Sophia Antipolis, France Sophia Antipolis, France
cedric.ulmer@sap.com yohann.bonillo@sap.com gabriel@serme.net
ABSTRACT
Complex business applications require object orientation to model
1. INTRODUCTION
In the early seventies, the computing programming industry
systems that reflect reality and generate maintainable and modular
started its migration from functional programming to object
code. In this paper we present an object oriented architecture that
oriented programming with languages such as Smalltalk. This step
utilizes two predominant state of the art paradigms, namely Web
was important to allow the maintenance of large applications, with
Services standards and REST to drive communications and access
reusability in mind and focus on data. However all the
to resources. The objective is to provide means to enable object
development was done in a local environment, so it was con-
oriented programming using known standards in order to ensure
strained to single large applications which have been poorly
simplicity of usage. Such an architecture can be incrementally
integrated with other applications [18]. In parallel to the evolution
implemented based on devices capabilities, from simple external
from structural to object oriented programming, another trend was
resources access to complex exposure of its own objects. The
to evolve towards distributed programming. This aspect allowed
paper starts with an introduction on usage of programming
to leverage interconnected computers and to do a further step
languages, and why current trends in the industry are structured
towards exibility of resources location. The architectures were no
programming oriented. We then present a public security scenario
longer centralized, but opened for communication between many
used to demonstrate our approach. After explaining how we
entities. Early distributed technologies were designed as a
differentiate from existing object oriented technologies, we detail
structured distributed programming, like the Remote Procedure
our Web Objects Description Language (WODL) and how it
Call (RPC) paradigm [16]. The industry then combined both
extends WSDL. We then present our Web Object Oriented
branches into distributed object applications. This led to new
architecture (WebOO) that leverages REST, and give directions
standards, like Common Object Request Broker Architecture
on scalability mechanisms that suit it. We conclude on further
(CORBA) [14] defined by the Object Management Group
work needed to validate our approach, in terms of security.
(OMG), to interconnect at an object level multiple computers
through a network. The object distributed computing was also
Categories and Subject Descriptors supported by the main industry majors, with the Distributed
D.2.12 [Software Interoperability]: Interoperability – Component Object Model (DCOM) [9] by Microsoft or Remote
Distributed objects. Method Invocation (RMI) [15] by Sun Microsystems. Yet none of
these standards reached a critical mass of adoption by the
General Terms developers and business user community. One point of failure in
Your general terms must be any of the following 16 designated these technologies was the link between the solution used and the
terms: Documentation, Performance, Design, Reliability, Security, vendor, as CORBA with its multiple Object Request Brokers
Standardization, Languages, Theory. (ORBs) [8]. This brought a complex approach to write and deploy
applications.
3.2.9 Polymorphism
This fundamental concept is "the ability of different classes to
respond to the same message and each implement the method
appropriately" [1].
This definition of polymorphism corresponds to the overloading.
No modification to the WSDL 2.0 format was required to enable
it.
No modification to WSDL neither was required to enable the
inheritance with polymorphism, also called overriding. The
example below demonstrates it.
<interface name="Person">
<operation visibility="public" static="false" name="print_1"
pattern="http://www.w3.org /ns /wsdl /out-only ">
<output element="tns:string" messageLabel=" out " />
</operation>
</interface>
<description xmlns="http://www.sap.com/ns/wodl" xmlns:tns="http://www.sap.com/publicSecurity/Investigator"
targetNamespace="http://www.sap.com/publicSecurity/Investigator">
<import namespace=http://www.sap.com/publicSecurity/Person
location="http://research.sap.com:8080/WebOOManager/WODL/sap/com/publicSecurity/Person.wodl"/>
<types>
<attributes>
<attribute visibility="private" constant="false" static="false" type="xs:string" name="rank" />
</attributes>
<xs:schema xmlns="http://www.sap.com/publicSecurity/Investigator"
xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sap.com/publicSecurity/Investigator">
<xs:element name="string" type="xs:string"/>
</xs:schema>
</types>
<interface name="Investigator" extends="Person">
<operation visibility="public" static="false" name="constructor1" pattern="http://www.w3.org/ns/wsdl/in-only">
<input element="tns:string" messageLabel="last name"/>
<input element="tns:string" messageLabel="firstname"/>
</operation>
<operation visibility="public" static="false" name="print_1" pattern="http://www.w3.org/ns/wsdl/out-only">
<output element="tns:string" messageLabel="out"/>
</operation>
</interface>
</description>