INTRODUCTION Traditionally computer software ran in stand-alone systems, where application processing, user interface and persistent data resided in one computer. Whereas the objects and locally distributed components are located on the computers utilizing them, distributed components are typically located on machines other than those making call to them [1]. With the growth of technology and certain challenges of software development in stand-alone systems, most computer software today runs in distributed systems, where the data resources, interactive presentation, application business processing, and data resources reside in loosely-coupled nodes and service tiers connected together by networks. Some challenges faced by stand alone systems are described as under: LOAD-SHARING The use of distributed software development facilitates the interaction across machine boundaries, and this allows system to harness the resources of multiple computers. Consequently, a number of systems may be involved in processing the request, potentially removing the bottlenecks in performance. INCREASED AVAILABITLITY Distribution of components may result in increased system availability, with multiple instances of each object residing on machine in network. If the instances are sharing load then the
48
Embed
Object and component based middleware for distributed system development
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
INTRODUCTION
Traditionally computer software ran in stand-alone systems, where application processing, user
interface and persistent data resided in one computer. Whereas the objects and locally distributed
components are located on the computers utilizing them, distributed components are typically
located on machines other than those making call to them [1]. With the growth of technology and
certain challenges of software development in stand-alone systems, most computer software
today runs in distributed systems, where the data resources, interactive presentation, application
business processing, and data resources reside in loosely-coupled nodes and service tiers
connected together by networks. Some challenges faced by stand alone systems are described as
under:
LOAD-SHARING
The use of distributed software development facilitates the interaction across machine
boundaries, and this allows system to harness the resources of multiple computers.
Consequently, a number of systems may be involved in processing the request, potentially
removing the bottlenecks in performance.
INCREASED AVAILABITLITY
Distribution of components may result in increased system availability, with multiple instances
of each object residing on machine in network. If the instances are sharing load then the loss of
one host will result in the load being distributed through the remaining machines.
HETEROGENITY
Different hardware and software platforms store data in different ways. Distributed systems
overcome this problem by utilizing a middleware layer that resolves the heterogeneity issues.
The middleware enables distributed components to exist on multiple different platforms, and still
interact with one another.
CHAPTER 1
MIDDLEWARE
Middleware is the layer of software that mediates between the application and the software. It is
responsible for managing the interaction between components distributed over heterogeneous
computing platforms.
There are four categories of middleware technologies identified by Wolfgang Emmerich. They
exhibit different properties, and these classifications are as follows:
1.1 TRANSACTION ORIENTED
Transactional middleware enables distributed components to ensure that an atomic operation
either occurs completely or not at all. This is achieved by the use of a two-phase commit
protocol. A transactional middleware does create some overhead, so if transactions are not
required for an operation this is an unnecessary additional cost. Transaction-oriented middleware
is commonly used in distributed databases.
1.2 MESSAGE ORIENTED
This form of middleware provides message transmission, receipt and queuing services to
distributed components. Messages are used to transmit service requests, updates and responses to
requests. Messages are held in queues until they are de-queued by receiving component and this
ensures messages are not lost when a host is busy or unavailable.
Message oriented middleware provides asynchronous communication between components,
reducing the coupling between the components. This leads to systems that are more scalable,
with less tightly coupled components.
1.3 PROCEDURAL
The most common form of procedure oriented middleware is Sun Microsystems’ remote
procedure call technologies. This enables the components on one computer to invoke procedure
or method located on other computers. The invocation or any associated parameters are
marshaled into messages and these are sent from one machine to another. The invocation
semantics with procedural middleware are commonly synchronous- with invoker being blocked
until the response is received.
1.4 OBJECT ORIENTED
Object oriented middleware is based on object oriented paradigm, and extends the functionality
of procedural middleware to provide additional facilities required for use in an object oriented
environment.
There are a number of object oriented middleware technologies used in IT industries, report has
detailed study of CORBA and J2EE middleware.
CHAPTER2
OBJECTS AND COMPONENTS
2.1OBJECTS
An object can be defined as a concept, abstraction or thing with crisp boundaries and meaning
for problem at the hand. The features often associated with objects are
An object has
State
Operations
Attributes
Provides an abstraction
Represents something real
Is self-contained
Is clearly defined
2.2 COMPONENTS
A component can be thought of as a collection of objects that provide a set of services to other
systems. They have many features in common with objects, but are less fine grained. Examples
of components include code that provides graphing facilities; provide network communication
services; or perhaps a search and browsing service around a set of tables in a database.
A component is “A self- contained entity that exports functionality to its environment and may
also import functionality from its environment using well-defined and open interfaces”. This
definition highlights a number of differences from objects:
Components are self–contained.
Provide services to other systems
Use stated interfaces to interact with other systems
Components may run either locally or in a distributed fashion. Many examples of locally run
components exist and are commonly used to provide specific functionality to external programs.
The Object Linking and Embedding (OLE) architecture was one of the first component
frameworks in common use, and this enabled the use of specialized functionality from one
program to be used in another program. An example of this is the use of Microsoft Excel
spreadsheets in Microsoft Word [2].
CHAPTER 3
CORBA
The Object Management group’s (OMG) Common Object Request Broker Architecture
(CORBA) is an important and popular technology that supports the development of object based
distributed applications.”ORB is a middleware that establishes the client server relationships
between the objects. Using an ORB the client can inherently invoke a method on the server
object, which can be on the same machine or across a network”. CORBA is intended to provide
a standardized platform for which to construct distributed components. A CORBA application
consists of a number of objects that store data and export functionality to other objects. CORBA
enables separate pieces of software written in different languages and running on different
computers to work with each other like a single application or set of services. CORBA uses an
interface definition language (IDL) to specify the interfaces of objects present to the outer world.
CORBA is language independent and has language bindings to Java, C, C++ and many other
common programming languages [3].
The CORBA specification dictates there shall be an ORB through which an application would
interact with other objects. In practice, the application simply initializes the ORB, and accesses
an internal Object Adapter, which maintains things like reference counting, object (and
reference) instantiation policies, and object lifetime policies. The Object Adapter is used to
register instances of generated code classes, which are a result of compiling the user IDL code,
which translates the high-level interface definition into an OS- and language specific class base
for use by the user application. This step is necessary in order to enforce CORBA semantics and
provide a clean user process for interfacing with the CORBA infrastructure. ORB is an abstract
entity that acts as a middleman in all remote method invocations. The ORB finds a server can
handle a method invocation, passes the request to the server, receives the response and forwards
it to the client. The functions handled by ORB are actually implemented by both client and
server.
3.1 PURPOSE OF CORBA
3.1.1VENDOR INDEPENDENT INTEROPERATIBILTY
Middleware that’s everywhere - is the main purpose of CORBA, which try to provide perfect
interoperability among any OS, hardware, and system. We might see the immediate benefit by integrating
legacy systems on mainframe computers and/or traditional client-server models with relatively new
component based systems on web technologies. Not only the interoperability among the variety of system
(architecture) styles but also interoperability among different vendors produces significant benefit for
users. “Open system” was the first step for vendor independent interoperability but still had a limitation in
architecture point of views. CORBA could be rephrased to “the road to the perfect open system”.
3.1.2 Implement ORB functions (narrow definition in OMA)
The purpose of CORBA in OMA is to implement ORB functions. OMA has CORBA-related
objects: CORBAservices [OMG 1998b], CORBAfacilities, and CORBAdomains.
o CORBAservices provide low-level, base-type services such as transactions, security, life-
cycle, and naming.
o CORBAfacilities provide a higher-level set of services such as printing management.
o CORBAdomains represent vertical domain-related standards such as manufacturing,
telecommunication, healthcare, financial and so on.
o Application objects, other than these CORBA related objects, are not standardized as part
of OMG activities.
3.2 ARCHITECTURAL DESCRIPTION : Any relationship between distributed objects has two sides: the client and server. The server
provides a remote interface, and client calls a remote interface. These relationships are common
to most distributed object standards, including RMI and CORBA. Note that in this context, the
terms client and server define object-level rather than application-level interaction any
application could be a server for some objects and clients for others [4].
On the client side, the application has a reference for the remote object. The object reference has
a stub method, which is a stand-in for the method being called remotely. The stub is actually
wired into the ORB, so that calling it invokes the ORB’s connection capabilities, which forwards
the invocation to the server.
On the server side, the ORB uses skeleton code to translate the remote invocation into a method
call on the local object. The skeleton translates the call and any parameters to their
implementation-specific format and calls the method being invoked. When the method returns,
the skeleton code transforms results or errors, and sends them back to the client via ORB’s.
Between the ORBs, communication proceeds by means of a shared protocol, IIOP-the Internet
Inter-ORB Protocol. IIOP, which is based on the standard TCP/IP internet protocol and works
across the internet, defines the procedure how CORBA-compliant ORBs pass information back
and forth [5].
Like CORBA and IDL, the IIOP standard is defined by OMG, the Object Management Group.
IIOP allows clients using a CORBA product from one vendor to communicate with objects using
a CORBA product from another vendor thus permitting interoperability, which is one of the
goals of the CORBA standard.
CORBA-compliant ORBs provides a number of services like maintaining persistent objects,
supporting transaction processing, enabling messaging and many other abilities useful in today’s