Today,
industries need to transform their client/server infrastructures into
services-oriented setups to stay competitive. Focus of IT has shifted from a
technology-centric approach to a flexibility-driven approach measured in
time-to-delivery and ability to change.
Though
it is universally accepted that service-oriented architectures implementations
lead to quantifiable benefits, yet in practice, their adoption has been
sluggish. The
strategy to remedy this situation is via middleware. In
the computer industry, middleware is a general term for any programming that
serves to "glue together" or mediate between two separate and often already
existing programs. In essence,
Middleware is a
computer software that interconnects software components or applications. This
software consists of a set of enabling services that allow multiple processes
running on one or more machines to interact across a network. Middleware is
especially integral to modern information technology based on XML, Web
services, and service-oriented architecture. A
common application of middleware is to allow programs written for access to a
particular database to access other databases. Typically, middleware programs
provide messaging services so that different applications can communicate.
How middleware evolved
Till
1980 s most of computing was based on central host computers equipped with
powerful processors and memory. Users interact with the host through the
terminals that captures keystrokes and sends the information to host. A major
bottleneck for this architecture was that the processing power was limited to
that of central host system, over dependence on the vendor for application
software, lack of support for GUI and access to multiple databases. The
mainframes prevalent at that time were based on this architecture. With advent
of PC s the files were downloaded from the shared location, processed and uploaded
back to file server. This had major drawback as it generated too much of
network traffic. However with emergence of client /server architecture, the computing
power or process management was distributed between the client and server.
For example
client could query database server using relational database management system
(DBMS) through standard query language (SQL). The results of query are sent to
the client, which then manipulates and processes the data. This two-tier
client/server architecture has limitation as the number of users grows beyond
certain limit, due to the fact that server has to maintain a dialog of
connection even when client is idle. Moreover any changes in application or
parameter would entail changes at all clients like a change in VAT rate would
need update on all the users’ workstation. To overcome these limitations
middle-tier was added between the user system interface client environment and
database management server environment. The middle tier or middleware is now
one of the emerging technologies in client server paradigm. It provides for
connectivity across heterogeneous platform and for more generalization of
Application Programming Interface (API) than operating system or network
services.
2.1. Application Programming Interface
(API): In order to fully understand middleware, one must first understand
the concepts surrounding Application Programming Interfaces (APIs). The API, by
definition, is a software program that is used to request and carry out
lower-level services performed by the computer’s operation system or by a
telephone system’s operating system.
In
a Windows environment, APIs also assist applications in managing windows,
menus, icons, and other GUI elements. In short, an API is a “hook” into
software. An API is a set of standard software interrupts, calls, and data
formats that application programs use to initiate contact with network services,
mainframe communications programs, telephone equipment or program-to-program
communications. For example, applications use APIs to call services that
transport data across a network. Standardization of APIs at various layers of a
communications protocol stack provides a uniform way to write applications.
This technology is a way to achieve the total cross-platform consistency that
is a goal of open systems.