Csic DJ Mar2006
Csic DJ Mar2006
Csic DJ Mar2006
net/publication/280445814
CITATIONS READS
6 643
1 author:
Debasish Jana
TEOCO Software Pvt Ltd
163 PUBLICATIONS 152 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Debasish Jana on 26 July 2015.
Abstract
Service Oriented Architecture (SOA) is not an entirely new concept, yet it has become a new paradigm of
today’s enterprise applications. Before the Internet and the Web came into existence, communication between
systems was very tightly coupled with the underlying system. Today’s complex software needs to be
interoperable and loosely coupled in order to communicate with each other in a seamless manner. Earlier SOAs
were built using DCOM or Object Request Brokers (ORBs) based on the Common Object Request Broker
Architecture (CORBA) specification. CORBA was capable of providing standards-based interoperability and
connectivity. SOAs provide loose coupling between components so that some components provide services
while some others consume offered services. Web services promise to offer interoperability to cater to the
growing complexity needs of software yet at the same time provide easy to access service interfaces.
1. Introduction
Early programming days had monolithic code running on mainframes. The goal was to have the computing done
using the machine. Earlier, computers were used more as a data processing machine or a number crunching
machine. With the advent of sophisticated technology in hardware as well as advancement of communication
and increased complexity of software, there emerged the need for structured programming and modularity. In
1968, when Edsger E Dijkstra wrote “Go To Statement Considered Harmful”, since then and later the designers
tried to make the programs more modular, structured, compartmentalized. A new era began. But even then, in a
procedural paradigm framework subroutines, functions, global data, maintenance started become nightmarish.
Need of abstractions were felt. Object Orientation tried to bring a new paradigm. Concentrate on what, not how
– is the theme of the OO paradigm. In OO paradigm, a module or a class offering a set of services should expose
a set of public interfaces or contracts and hide out the implementation details. The caller needs to make call to
the exposed interface to avail the service without being bothered how internally the service is catered to.
5. Earlier Technologies
Lets now investigate the available technologies catering to loosely coupled systems or subsystems to make
earlier service based systems before service oriented architecture came into existence. The earlier service-
oriented architecture was using DCOM or Object Request Brokers (ORBs) based on the Common Object
Request Broker Architecture (CORBA) specification. CORBA was capable to provide standards-based
interoperability and connectivity. Also, Microsoft’s Common Object Model (COM) and Object Link Embedded
(OLE) component infrastructure and object bus were among distributed objects based technology. CORBA
objects used to be active objects that can stay anywhere on a network. That are packaged such that remote
clients can access them via method calls. The language and complier used to create server objects used to be
totally transparent to clients. Clients thus don’t need to know where the distributed object stays or what platform
it runs on. Clients don’t also need to know how the server object is implemented. For example, a server object
could be implemented as a set of C++ classes or it could be implemented with a set of code written in some
other language, the client should not be able to make out the difference. The client needs to know only the
interface that the server object publishes as a contract. The interface or contract serves as a binding rule between
clients and servers. CORBA has been designed to be independent from the Operating System. CORBA runs on
many operating system platforms, ranging from the Win32/UNIX up to the real-time embedded systems and
supports a vast majority of programming languages as well as some scripting languages. Communication
protocols used by CORBA for ORB communications include TCP/IP, IPX/SPX, ATM, etc.
Cross-language, cross-vendor interoperability used to be achieved via the Internet InterORB Protocol, or IIOP.
IIOP is a transport protocol for distributed applications written in either IDL (Interface Definition Language) or
Java RMI (Remote Method Invocation). In CORBA, object orientation is limited only to objects that can be
passed by reference or are predefined in the overall framework. We cannot pass code from machine-to-machine.
Passed and returned types must be those declared in the interface. In CORBA, the parameter or return values are
limited to the capability of representation available in the underlying implementation languages. In Java-RMI,
the interface and the implementation language are described in Java. As such, the code i.e. language-level
objects can be passed from one process to the next, from one machine to other. Argument values or return
values can be actual type, not abstracted type. Otherwise, IIOP stubs and skeletons need to be generated to
remain accessible from other CORBA-compliant languages.