Component Technology
Challenges Facing the Software Industry
Today’s applications are large & complex –
time consuming to develop, difficult and
costly to maintain and risky to extend with
additional functionality
Applications are monolithic – consisting of a
single binary file – prepackaged with wide
range of features, most of which cannot be
upgraded independently
Challenges Facing the Software Industry
Applications are not easily integrated – data
& functionality of one application are not
easily available to other applications, even if
the applications are written in the same
language and running on the same computer
Solution – Component Architecture
Solution lies in breaking the software into
reusable “Components”
A Component is like a mini application, which
comes as a binary bundle of code, that is
compiled, linked and ready to use
Monolithic application is replaced with custom
components that connect with each other at
run-time to form an application
Solution – Component Architecture
For example, a component might be a spell
checking feature sold by one vendor that can
be plugged into several different word
processing applications
Modifying or enhancing the application is a
simple matter of replacing one of these
constituent components with a new version
Application remain no more static entity,
instead it evolves gracefully over time as new
components replace older ones
Component Benefits
Application Customisation
Component architecture lends itself to
customisation as each component can be replaced
with a different component that better meets the
needs of the user
Helps evolution of application as new
components replace the older ones
Component Benefits
Rapid Application Development
Component architecture facilitates rapid
application development, by choosing components
from a component library and snap them together
to build application
Component Benefits
Distributed Components
With increasing bandwidth, the need for
applications composed of parts spread over a
network is going to increase
Component architecture simplifies the process of
developing such distributed applications
Component Benefits
Client/Server applications have already
taken first step towards a component
architecture by splitting into two parts –
client part and server part
Making a distributed application out of an
existing application is easier, if it is made
of components, as the application is
already divided into functional parts that
can be located remotely
Component Benefits
The distributed application can contain a
component that has a sole purpose of
communicating with a remotely located
component, thereby rendering the
application completely independent of
where actual components are located
What makes Components so useful?
The advantages of using components result
directly from their ability to dynamically plug
into and unplug from an application
In order to achieve this capability,
components must meet two requirements
First, components must link dynamically
Second, components must hide (or encapsulate)
the details of how they are implemented
What makes Components so useful?
Dynamic Linking
The ultimate goal is to provide the facility to
replace the components in our application while
the application is still running. Support for
changing components at run time requires the
ability to dynamically link components together
What makes Components so useful?
Encapsulation
Encapsulation is a crucial condition for dynamic
linking
To replace an old component in a system with a
new component, it is necessary that the new
component must connect in the same manner as
the old component or else atleast a recompile, if
not a rewrite will have to be done
What makes Components so useful?
To achieve encapsulation, Components
connect to each other through interfaces
Interface isolate implementation details of
the component, thus changing a
component has no effect on the rest of the
application
How Things are Achieved?
The Component Object Model (COM), which
is the underlying specification, meets all the
requirements for component architecture
COM is a standard which specifies how to
build components and how components talk
to each other
COM Components
Components written to COM specifications are
refered to as COM components
COM Components consist of executable code
distributed either as dynamic linked libraries (DLLs)
or as executables (EXEs)
COM Components
COM components meet all the requirements
for a component architecture
COM Component are fully language independent
Can be shipped in binary form
Can be upgraded without breaking old clients
Can be transparently relocated on a network
Announce their existence in a standard way using
COM’s publication scheme