Está en la página 1de 9

A Web Object Oriented approach Using Web Services and

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

Osvaldo Cocucci Florian Gilcher


SAP Research SAP Research
Brisbane, Australia Sophia Antipolis, France
o.cocucci@sap.com flo@andersground.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.

Keywords The rise of interconnected machines through internet shifted the


Web Object Orientation, REST, Web Service, WSDL 2.0, focus towards interoperability between software solutions. After
WODL. local programming and distributed programming came "web-
operable programming". The main communication-channel in this
paradigm is the Internet. Interfaces based on this "web-operable
programming" are called Web services. They are built on
standards, as Simple Object Access Protocol (SOAP) and Web
Services Description Language (WSDL) which bring a
standardized way to interconnect applications together. This set of
standards has been accepted by the developers' community and by
the main actors of the industry. But programming using Web
services can be seen as programming in a distributed fashion, with 3.1.1 OMG Interface Definition Language (IDL)
a focus on function calls. There is no notion of object orientation. IDL is a language used by CORBA and RMI to describe "the
Furthermore, these Web services require a complex library stack interfaces that client objects call and object implementations
to handle the communication. In 2000, Roy Fielding proposed a provide" [14].
different approach for communication between peers:
REpresentational State Transfer (REST) [10]. REST propagates "An interface consists of a set of named operations and the
the idea that plain HyperText Transfer Protocol (HTTP) is already parameters to those operations."
enough to have meaningful interactions between systems. "IDL is the means by which a particular object implementation
From these considerations, we searched a way to enable object tells its potential clients what operations are available and how
orientation in a "web-operable" world, while taking into they should be invoked. the IDL definitions, it is possible to map
consideration adopted standards and technologies. We propose a CORBA objects into particular programming languages or object
combination of Web services and REST to give a clear and systems."
elegant object orientation. We call it Web Object Orientation Syntactically, IDL behaves similarly to common widespread
(WebOO). object programming languages (e.g. Java and C++) for interface
We introduce here several terms which will be used throughout description. That's why this language is usually easy to write and
the document: WebOO is the concept of a distributed computing understand.
through the Internet and with the support of major standards;
WODL (Web Objects Description Language) is the description of 3.1.2 Web Services Description Language v2.0
the distributed objects structure; and Web Objects are remote WSDL 2.0 is a language based on the XML format, which
instances that run on the server-side. provides a model for describing Web services [13]. This
description is done in two fundamental stages: an abstract and a
2. USE CASE: SCENARIO DESCRIPTION concrete one.
We implemented a prototype based on this architecture. This At an abstract level, WSDL 2.0 provides the structure description
section presents a homeland security scenario which will be used of the messages sent to and received by a Web service. "An
in the following sections to illustrate our concept explaining the operation associates a message exchange pattern with one or more
steps to use the WebOO and the interactions among actors. messages. A message exchange pattern identifies the sequence and
In a scenario of criminal cases management, public security cardinality of messages sent and/or received as well as who they
organizations need to share information about a criminal case. are logically sent to and/or received from. An interface groups
Investigators will contribute by searching evidences and criminal together operations without any commitment to transport or wire
information in order to fill in a criminal case. Two police forces format."
department need to collaborate, and each are using a different At a concrete level, "a binding specifies transport and wire format
applications system. One of the police force is in charge of details for one or more interfaces. An endpoint associates a
proposing a shared information system. network address with a binding. Finally, a service groups together
This police force has to define its Person, Investigator, Criminal, endpoints that implement a common interface."
Evidence and CriminalCase models [Figure 1]. WSDL 1.1 HTTP binding was inadequate to describe
In section 3.3, we will see how the police force de scribes these communications with HTTP and XML, so there was no way to
models in WODL files. formally describe REST Web services with WSDL. Designed with
REST Web services in mind, WSDL 2.0 has resolved the issues of
the previous version and was declared as a W3C recommendation
3. DESIGN TIME in June 2007.
To enable WebOO, we first need to describe the objects interfaces
to know how the objects are structured, with their methods and Many industry leaders (e.g. Adobe, IBM, Microsoft, Oracle and
attributes. Then, we need to know where to send the requests, and SAP) have participated to the creation and the implementation of
how to build them. As we rely on Web services, there is already a this new version [3]. This strong involvement allowed WSDL 2.0
standard designed to partially describe these information: the to integrate anticipated features such as HTTP support. Thus,
WSDL format. WSDL 2.0 has become one of the technologies that "provide a
foundation for developers to build enterprise applications that are
3.1 State of the art reusable, extensible, web-friendly" [2]. Yet architects such as
This chapter provides an introduction to the OMG Interface Mark Little outlined that these changes have "added a lot of
Definition Language (IDL) which is a recognized object complexity" and that this new version has "a lack of backwards
description language, and this WSDL format which is the basis compatibility" [11]. Moreover, by definition, this language is
for the object description language that we propose in this paper. purely service oriented.
Although many languages exist for describing objects interfaces,
we focus on IDL with regards to object description in a
distributed environment. The concepts remain the same for other
existing languages, we want to highlight here the key features.
Figure 1 – Use Case Class Diagram

3.2 Proposal: Web Objects Description 3.2.3 Encapsulation


Language This fundamental concept is "a technique for designing classes
and objects that restricts access to the data and behavior by
WODL is derived from the W3C recommendation WSDL 2.0. Its
defining a limited set of messages that an object of that class can
purpose is to represent a Web Object and to indicate how to
receive" [1].
interact with the described object. We have based WODL on
WSDL 2.0 because the latter is a well-accepted standard when To define this access, we added a visibility parameter in the
dealing with web-based interaction. attribute and operation tags. This parameter can take its value in
the following range: public, package, protected or private.
Object oriented programming uses several concepts. For example,
to describe an object, and furthermore a Web Object, we have to
define the characteristics and the behaviors of this object, similar 3.2.4 Attribute
to what IDL does. Deborah J. Armstrong has identified the eight This concept is the representation of an object's information.
fundamental concepts of object oriented development [1]. WODL
To describe these object information, we added an attributes tag
being a description language, it does not necessarily need to
to the existing types tag. This attributes tag is composed of an
comply with all these fundamental concepts developed for
attribute sub-tag for each object piece of information. Each
programming languages. Structured around these concepts, this
attribute sub-tag has a visibility parameter for enabling the
chapter details the parts of the WSDL 2.0 format that we have
encapsulation concept, a constant parameter to indicate whether
modified to suit our object orientation needs.
the attribute is invariant or not, a static parameter to indicate
whether the attribute is a class-attribute or not, a type parameter to
3.2.1 Abstraction give the simple type, the Web Object type or the list type of the
This fundamental concept is "the act of creating classes to attribute and a name parameter to identify the attribute. Each
simplify aspects of reality using distinctions inherent to the public attribute will entail the generation of the corresponding
problem" [1]. getter and setter methods.
WODL describes a Web Object at the abstraction level. Indeed, <types>
our description language defines the data and behavior of an <attributes>
object without providing any implementation. is a language. <attribute visibility="private" constant="false" static="false"
type="xs:string" name="description"/>
3.2.2 Class </attributes>
This fundamental concept is "a description of the organization and </types>
actions shared by one or more similar objects" [1].
To enable this description, we used the existing interface tag that
will contain the class behaviors. The name of the class is given by
the existing name parameter of the interface tag.
<interface name="CriminalCase "></interface>
3.2.5 Inheritance <interface name="Criminal" extends="Person">
This fundamental concept is "a mechanism that allows the data <operation visibility="public" static="false" name="print_1"
and behavior of one class to be included in or used as the basis for pattern="http: //www.w3.org/ns/wsdl/out-only">
another class" [1]. <output element="tns:string" messageLabel="out" />
</operation>
To define that a class inherits from another one, we used the
</interface>
existing extends parameter in the interface tag.
<interface name="Criminal" extends="Person"> Because of the WSDL restriction - each operation name must be
</interface> unique - we had to create a specification to enable the parametric
polymorphism - to allow for multiple methods with the same name
3.2.6 Object but not the same signatures. So, we put a suffix to the operation
This fundamental concept is "an individual, identifiable item, names composed by an underscore followed by a number
either real or abstract, which contains data about itself and identifying the operation.
descriptions of its manipulations of the data" [1]. <interface name="CriminalCase">
This concept does not apply to our description language as it <operation visibility="public" static="false"
concerns instances of objects. We have taken the decision to let name="add_1"
pattern="http://www.w3.org/ns/wsdl/in-only">
users select their object representation (e.g. XML and JSON).
Note that we are working on extending WODL for this purpose, <input element="tns:Criminal" messageLabel="criminal" />
by adding a value parameter to the attribute tags but this is not the </operation>
purpose of this paper. <operation visibility="public" static="false" name="add_2"
pattern="http://www.w3.org/ns/wsdl/in-only">
3.2.7 Message Passing <input element="tns:Evidence" messageLabel="evidence" />
This fundamental concept is "the process by which an object </operation>
sends data to another object or asks the other object to invoke a </ interface>
method" [1].
3.3 Use Case: Scenario Based WODL
This concept addresses a run-time problematic that is not related
to the WODL. We will address it in the section 4.2. Example
After the definition of the Person, Investigator, Criminal,
Evidence and CriminalCase models [Figure 1], the police force
3.2.8 Method has to describe these models in WODL files. Figure 2 shows the
This fundamental concept is "a way to access, set or manipulate
Investigator description in the WODL format.
an object's information" [1].
In section 4.3, we will see how to install a central system to
To describe a method, we used the existing operation tag with its
expose these WODL files and Web Objects. The police force will
existing input and output sub-tags to define the inputs and outputs
add the SOAP and/or HTTP bindings and the endpoints
of the method. We added a visibility parameter for enabling the
corresponding to their system to the WODL files to provide the
encapsulation concept and a static parameter to indicate whether
run-time information needed by the clients to access the Web
the method is a class-method or not.
Objects.
<operation visibility="public" static="false" name="print_1"
pattern="http://www.w3.org/ns/wsdl/out-only ">
<output element="tns:string" messageLabel="out" />
</operation>

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>

Figure 2 – Scenario based WODL example


4. RUNTIME
The architecture proposed in this paper is based on the usage of is the Uniform Resource Identifier (URI) and the verbs are the
mainstream technologies, more specifically Web services and standard HTTP methods as POST, GET, PUT and DELETE. The
REST orientation. This technology association results in a system research community is having several opinions on how these
that offers a distributed view keeping the RESTful services methods can be mapped to the CRUD operations. For instance,
interoperability and flexibility. these methods can respectively associated with the CREATE,
READ, UPDATE and DELETE operations. Each method has
4.1 State of the Art clear defined semantics that can be relied upon.
This chapter introduces the REST and Web services technologies, When looking at sophisticated applications, going for a purely
along with the ones related to CORBA. REST oriented approach can become too complex. We mean here
that considering only resources exposed through CRUD
4.1.1 REpresentational State Transfer (REST) operations forces the developer to redesign his objects whenever
The term REST was coined by Roy Fielding in his PhD he has operations or services in mind.
dissertation [5]. "REST provides a set of architectural constraints
that, when applied as a whole, emphasizes scalability of 4.1.2 SOAP Version 1.2
component interactions, generality of interfaces, independent SOAP is "a lightweight protocol intended for exchanging
deployment of components, and intermediary components to structured information in a decentralized, distributed environment.
reduce interaction latency, enforce security, and encapsulate It uses XML technologies to define an extensible messaging
legacy systems". R. Fielding describes the software engineering framework providing a message construct that can be exchanged
principles guiding REST and the interaction constraints chosen to over a variety of underlying protocols" [7].
retain those principles, contrasting them to the constraints of other
SOAP is a protocol specification enabling the exchange of
architectural styles.
structured information in the implementation of Web services [7].
In REST, everything is a resource. A resource can be thought of SOAP uses the HTTP for RPCs, hiding the HTTP semantics from
as a distant object one can interact with, but not manipulate SOAP applications. In fact, "SOAP treats HTTP as a lower-level
directly. This is similar in spirit to object oriented programming communication protocol" and uses its own semantics [12].
where everything is an object, but the approach is fundamentally
different. 4.1.3 General/Internet Inter-ORB Protocol
(GIOP/IIOP)
Every resource, identified by a unique name, is interacted with The GIOP "specifies a standard transfer syntax (low-level data
using a universally predefined set of verbs. These verbs are representation) and a set of message formats for communications
defined for every resource globally. On the web, the unique name between ORBs [...] and is designed to work directly over any
connection-oriented transport protocol" [14]. The CORBA and
RMI communications use the IIOP which is the implementation
of the GIOP for Transmission Control Protocol/Internet Protocol The Web Object identifier is based on the same combination, so
(TCP/IP). host name, port number, namespace and class name with a local
An Object Request Broker (ORB) is "responsible for all of the unique identifier - in our prototype we use a Universal Unique
mechanisms required to find the object implementation for the IDentifier (UUID). It allows the WebOO Manager to access the
request, to prepare the object implementation to receive the local matching instance. A list of the values of all the public
request, and to communicate the data making up the request. The attributes of this instance is accessible via an HTTP GET method.
interface the client sees is completely independent of where the http://hostname:port/namespace/class/id
object is located, what programming language it is implemented A client can manipulate directly an attribute of an instance adding
in, or any other aspect that is not reflected in the object's to the URI identifying the instance, the name of this attribute.
interface" [14].
http://hostname:port/namespace/class/id/attribute
These standards are maintained by the OMG. The addition of the
A client can execute a method within an instance adding to the
IIOP layer for communication has negatively impacted the
URI, the name of the method.
performance of CORBA [8]. In addition, security is one of the
core features that CORBA failed to provide [8]. http://hostname:port/namespace/class/id/method
In this case, the WebOO Manager extracts the needed parameters
4.2 Proposal: Web Object Oriented from the incoming message, and then it passes them to the correct
Architecture instance. The WebOO Manager gets the response from the
To overcome the issues with existing distributed object instance - if existing - and serializes it using the communication
orientation we suggest a Web Object Oriented architecture, which protocol format described in the WODL file. It then sends the
relies on accepted standards. In this section, we describe the response to the client.
architecture overview [Figure 3].

4.2.1 Server Components


The WODL files save the description of object interfaces with the
WODL format seen in the previous section.
The Web Objects are remote instances that are hosted on servers.
A server stores also the WODL files associated with these objects.
The WebOO Manager is a component running on the server. It
exposes the currently running Web Objects through an interface
and allows clients to access them.

4.2.2 Client Components


The WebOO Helpers are optional classes which are responsible
for the requests sent by a client to communicate with the Web
Objects. A WebOO Helper can be generated by our implemented
framework from a WODL file. Any client with a Web service
stack and a HTTP stack can access operations.
The program component is a client application that can
communicate with Web Objects. It can have its own
implementation for this communication from the location
information contained in the WODL files, or use directly the
WebOO Helpers.

4.2.3 Communication Figure 3 – WebOO Architecture Overview


The binding part of WSDL 2.0 propagates how to access the
server and how to serialize data. We keep this feature in our We have seen that the methods of a Web Object are defined as
object orientation for call operations. operations of a Web service. So a client can call a method of an
instance sending a message with the corresponding binding to the
As for the manipulation of attributes or Web Objects, we use the corresponding endpoint described in the WODL file.
REST capabilities. Thus, they are identified by a URI and are
interacted with using the HTTP methods. For example, we can use As we see in distributed oriented programming platforms,
directly the DELETE method to delete a Web Object. communication is often embedded in a new protocol layer, but the
WebOO architecture only uses the HTTP protocol as a
The WebOO Manager is responsible for waiting for clients communication layer.
requests and determining the action to be executed.
Web Object information can be easily accessed through a standard
In the next paragraphs, we will describe how to identify the web browser using a HTTP GET request to the corresponding
different resources. A client can get the collection of Web Objects URI. We used in our implementation an ATOM feed describing
belonging to the same model with an HTTP GET method thanks the data, as it is a widespread standard for web data feeds,
to the combination between the name of the host, the port number, together with the RSS format. This format is a simple way to write
a namespace given in the WODL file of the model and the class information on the web that is human readable.
name.
http://hostname:port/namespace/class
The server could also communicate with another server as a client. Request
It means usingWebOO Helper, on the server or the client side, one GET /WebOOManager/sap/com/publicSecurity/Evidence/69
can use a remote object. HTTP/1.1
As we have seen, the WebOO architecture is a combination of Host : research.sap.com
existing technologies, such as Web services, RESTful If-None-Match : 8d7033
communication to enhance the performance and reduce the
complexity, and the addition of distributed objects which process
the remote calls. Response
HTTP/1.1 304 Not Modified
4.2.4 Scalability
Using REST as a core technology opens up many interesting ETag : 8d7033
scalability options. Although REST is said to be very scalable [5], ETags are widely used and supported by most clients - especially
there are no comprehensive analysis to be found, especially not web browsers - and are easy to interact with on the client side.
when it comes to business applications. In this part, we describe They can be used for preconditions. Clients not handling ETags
some of these scalability techniques. remain compatible, as long as the server does not decide to make
them mandatory.
4.2.4.1 Content Negotiation
Contrarily to specifications associated with Web services, REST 4.2.4.3 Caching
allows for different forms of documents to be returned for a given "HTTP is typically used for distributed information systems,
resource. These are usually identified by their Media Type (e.g. where performance can be improved by the use of response
text/html, text/xml, application/json and application/atom+xml). caches. The HTTP/1.1 protocol includes a number of elements
Through the Accept HTTP/1.1 request header field, the client can intended to make caching work as well as possible" [4].
specify his preferences towards the form of the returned data. On 4.2.4.4 Edge Side Include (ESI)
the other hand, the server can specify the type of the returned data
ESI "is an XML-based markup language that provides a means to
in the Content-Type HTTP/1.1 response header field [4].
assemble resources in HTTP clients. Unlike other in-markup
Request languages, ESI is designed to leverage client tools like caches to
GET /WebOOManager/sap/com/publicSecurity/CriminalCase improve end-user perceived performance, reduce processing
HTTP/1.1 overhead on the origin server, and enhanced availability. ESI
Host : research.sap.com allows for dynamic content assembly at the edge of the network,
whether it is in a Content Delivery Network (CDN), end-user's
Accept : application/atom+xml; q=0.8,
browser, or in a "Reverse Proxy" right next to the origin server."
application/rss+xml, text/xml [17]. One of the biggest providers of a CDN is Akamai, which for
Response that purpose defined ESI and submitted it to the W3C. The ESI
HTTP/1.1 200 OK
specification has the status of a W3C note.
Content-Type : application/atom+xml ESI is simple, there is only one element of interest for our case,
the include tag which specifies a fragment for assembly.
<entity body>
<esi:includesrc="http://research.sap.com:8080/WebOOManager/
This can be used in some non-obvious ways. All common sap/com/publicSecurity/CriminalCase/90/criminals" />
JavaScript libraries request application/json (JavaScript Object
Notation), saving a lot of wrap/unwrapwork to be done on the 4.3 Use Case: Scenario Based Communication
client. This is especially interesting for mobile clients where
saving CPU cycles and memory still matters. Mashups can be
Examples
After the description of the models (see Fig. 1) in the WODL
served with prerendered fragments of the data they want to
format, the police force installs a central system with a WebOO
display, saving error-prone and semantic-changing conversions.
Manager that hosts the WODL files.
4.2.4.2 Entity Tag (ETag) The police force now provides the run-time information needed
An ETag is an identifier for the current resource state and it can by the clients to access the Web Objects. For this purpose, within
be used to track changes. It is specified in the HTTP/1.1 standard its WODL files, it fills in the SOAP and/or HTTP bindings and
where it is used in the If-Match, If-None-Match and If-Range the
request header fields and in the ETag response header field [4].
<description xmlns="http://www.sap.com/ns/wodl" xmlns:wsoap=http://www.w3.org/ns/wsdl/soap
xmlns:tns="http://www.sap.com/publicSecurity/Investigator"
targetNamespace="http://www.sap.com/publicSecurity/Investigator">
<import .../>
<types>...</types>
<interface name="Investigator" extends="Person">...</interface>
<binding name="InvestigatorSoapBinding" interface="tns:Investigator" type=http://www.w3.org/ns/wsdl/soap
wsoap:protocol=http://www.w3.org/2003/05/soap/bindings/HTTP/
wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
<operation ref="tns:_constructor_1"/>
<operation ref="tns:_print_1"/>
</binding>
<service name="InvestigatorService" interface="tns:Investigator">
<endpoint name="InvestigatorSoapEndpoint" binding="tns:InvestigatorSoapBinding"
address="http://research.sap.com:8080/WebOOManager/sap/com/publicSecurity/Investigator"/>
</service>
</description>

Figure 4 – Scenario based Communication Example


endpoints corresponding to their system. Figure 4 shows the <env:Body>
Investigator endpoint and its binding in the WODL format. <b:printResponse xmlns:b="http://research.sap.com:8080/
Then, with our framework, they generate class files from WODL WebOOManager/sap/com/publicSecurity/
Investigator/51">
on the server side. After having implemented the behaviour of the
objects, they expose a URL link to the WODL files. <b:out type="xs:string">
Investigator description...
On the client side, the other organizations can use our framework
with the provided link in order to generate the needed helper </b:out>
classes to use the remote objects. Doing nothing more they can </b:printResponse>
use these remote objects in their main class. The objects can be </env:Body>
used as local objects; it is transparent for the user. The example
</env:Envelope>
below shows the call of the print method on an Investigator
instance as a service following the SOAP binding defined in the If another organization needs to use or retrieve the attributes of
WODL. the objects, whatever the system they are using, they can use the
HTTP stack implementation of their language to reach this object
Request
and use the CRUD verbs to process operations. In one line they
POST /WebOOManager/sap/com/publicSecurity/Investigator/51 can retrieve this value. In order to check the value of the attribute
HTTP/1.1 they can use a web browser and get the associated ATOM feed.
Host : research.sap.com The example below shows the communication established by a
Accept : application/soap+xml client to access the public values of an Evidence instance.
<?xml version="1.0" encoding="UTF-8"?> Request
<env:Envelope GET /WebOOManager/sap/com/publicSecurity/Evidence/69
xmlns:env="http://www.w3.org/2003/05/soap-envelope"> HTTP/1.1
<env:Body> Host : research.sap.com
<b:print xmlns:b="http://research.sap.com:8080/ If-None-Match : 8d7033
WebOOManager/sap/com/publicSecurity/
Accept : application/atom+xml
Investigator/51" />
</env:Body> Response
</env:Envelope> HTTP/1.1 200 OK
Response ETag : 8d7055
HTTP/1.1 200 OK Content-Type : application/atom+xml
Content-Type : application/soap+xml <?xml version="1.0" encoding="UTF-8"?>
<?xml version ="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom">
<env:Envelope <title>Public fields of an Evidence</title>
xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <link rel="alternate"
href="http://research.sap.com:8080/WebOOManager/
sap/com/publicSecurity/Evidence/69"/>
<entry>
<title>xs:string : description </title> [3] J. Daly, M.-C. Forgue, and Y. Hirakawa. W3C Completes
<link rel="alternate" Work on Critical Web Services Standard, June 2007.
href="http://research.sap.com:8080/WebOOManager/ http://www.w3.org/2007/06/wsdl20-pressrelease.
sap/com/publicSecurity/Evidence/69/description"/>
[4] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P.
<updated>2009-06-19T12:05:33Z</updated> Leach, and T. Berners-Lee. Hypertext Transfer Protocol -
<summary> HTTP/1.1. RFC 2616 (Draft Standard), June 1999. Updated
Description:Assault rifle developed in the Soviet Union by by RFC 2817.
Mikhail Kalashnikov. [5] R. T. Fielding. Architectural Styles and the Design of
</summary> Network-based Software Architectures. PhD thesis,
</entry> University of California, Irvine, California, USA, 2000.
</feed> [6] J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P.
Leach, A. Luotonen, and L. Stewart. HTTP Authentication:
Now, every organization can contribute to the completion of a
Basic and Digest Access Authentication. RFC 2617 (Draft
criminal case in order to gather updated information.
Standard), June 1999.
[7] M. Gudgin, M. Hadley, N. Mendelsohn, J.-J. Moreau, H. F.
5. CONCLUSIONS Nielsen, A. Karmarkar, and Y. Lafon. SOAP Version 1.2
This paper presented an architecture enabling an object
Part 1: Messaging Framework (Second Edition). W3C, Apr.
orientation from a web-operable perspective. This architecture
2007. http://www.w3.org/TR/soap12.
combines existing technologies and concepts, such as REST, Web
services and distributed computing. We took a look at the history [8] M. Henning. The rise and fall of corba. Queue, 4(5):28-34,
of computing and our assumption is that the current trends in June 2006. Magazine article.
programming models need to evolve from Web services to its [9] M. Horstmann and M. Kirtland. DCOM Architecture.
distributed object oriented version called WebOO, similar to the Microsoft, July 1997. http://msdn.microsoft.com/en-
evolution of local programming from procedural to object us/library/ms809311.aspx.
oriented. [10] A. P. Kalogeras, J. Gialelis, C. Alexakos, M. Georgoudakis,
We proposed a way to do web object programming without and S. Koubias. Vertical Integration of Enterprise Industrial
breaking existing technologies. WebOO is to be considered as Systems Utilizing Web Services. In WFCS'04: Proceedings
complementary to Web services. It is a technology which allows of the 5th IEEE International Workshop on Factory
the reuse of Web services tools with slight modification for Communication Systems, pages 187-192.IEEE Industrial
supporting WebOO support. Electronics Society and Vienna University of Technology,
Sept. 2004.
We plan to investigate the security aspect, to allow our
[11] M. Little. Does wsdl 2.0 matter? InfoQ, Jan. 2007.
architecture to gain maturity. In fact, we use the HTTP protocol as
http://www.infoq.com/news/2007/01/wsdl-2-importance.
the communication layer in our system. We assume HTTPS is a
security protocol which can be used as a security layer for our [12] A. T. Manes. REST and SOAP and document-oriented
communication. We also use capacity of the HTTP Authentication services, 2005. http://atmanes.blogspot.com/2005/09/rest-
[6] to set the credentials for each instance. Yet HTTPS is securing and-soap-and-document-oriented.html
only the communication layer, so we need to identify the [13] J.-J. Moreau, S. Weerawarana, R. Chinnici, and A. Ryman.
complementary technologies to ensure a complete chain of Web services description language (WSDL) version 2.0 part
security, up to the applications. We will look at access control 1: Core language. W3C recommendation, W3C, June 2007.
policy mechanisms to complement HTTPS, before investigating in http://www.w3.org/TR/2007/REC-wsdl20-20070626.
cascading objects level security. [14] OMG. Common Object Request Broker Architecture
We implemented a functional prototype, as seen in the use case (CORBA) Specification, Version 3.1, Jan. 2008.
sections. It illustrates the concept of WebOO in a real case, with http://www.omg.org/spec/CORBA/3.1/
tools simplifying the development. [15] Sun Microsystems. Java remote method invocation home.
In order to leverage community-based collaboration, we propose a [16] R. Thurlow. RPC: Remote Procedure Call Protocol
WODL exchange platform that we have called ModelForge. Specification Version 2. RFC 5531 (Draft Standard), May
Leveraging the principle of social collaborative websites, it 2009.
enables developers communities to share, discuss, document and [17] M. Tsimelzon, B. Weihl, J. Chung, D. Frantz,J. Basso, C.
rate object models. Newton, M. Hale, L. Jacobs, and C. O'Connell. ESI
Language Specification 1.0. W3C, akamai technologies
6. REFERENCES edition, Aug. 2001. http://www.w3.org/TR/esi-lang.
[1] D. J. Armstrong. The quarks of object-oriented development. [18] J. Waldo, G. Wyant, A. Wollrath, and S. Kendall. A Note on
Communications of the ACM, 49(2):123-128, Feb. 2006. Distributed Computing. Technical Report TR-94-29, SMLI,
Magazine article. Mountain View, CA, USA, Nov.
[2] C. Barreto, K. Norsworthy, S. Weerawarana, and M.
Bechauf. Testimonials for wsdl 2.0 recommendation, June
2007. http://www.w3.org/2007/06/wsdl20-testimonial.

También podría gustarte