MIDDLEWARE

Middleware is a class of software technologies designed to help manage the complexity and heterogeneity inherent in distributed systems. It is defined as a layer of software above the operating system but below the application program that provides a common programming abstraction across a distributed system, as shown in Figure 1. In doing so, it provides a higher-level building block for programmers than Application Programming Interfaces (APIs) such as sockets that are provided by the operating system. This significantly reduces the burden on application programmers by relieving them of this kind of tedious and error-prone programming. Middleware is sometimes informally called “plumbing” because it connects parts of a distributed application with data pipes and then passes data between them.
Middleware frameworks are designed to mask some of the kinds of heterogeneity that programmers of distributed systems must deal with. They always mask heterogeneity of networks and hardware. Most middleware frameworks also mask heterogeneity of operating systems or programming languages or both. A few such as CORBA also mask heterogeneity among vendor implementations of the same middleware standard. Finally, programming abstractions offered by middleware can provide transparency with respect to distribution in one or more of the following dimensions: location, concurrency, replication, failures, and mobility. The classical definition of an operating system is “the software that makes the hardware useable.” Similarly, middleware can be considered to be the software that makes a distributed system programmable. Just as a bare computer without an operating system could be programmed with great difficulty, programming a distributed system is in general much more difficult without middleware, especially when the heterogeneous operation is required. Likewise, it is possible to program an application with an assembler language or even machine code, but most programmers find it far more productive to use high-level languages for this purpose, and the resulting code is of course also portable.
The following components are or could be middleware services:
·         Presentation Management: forms manager, graphics manager, hypermedia linker, and printing manager.
·         Computation: sorting, math services, internationalization services (for character and string manipulation), data converters, and time services.
·         Information management: directory server, log manager, file manager, record manager, relational database system, object-oriented database system, repository manager.
·         Communications: peer-to-peer messaging, remote procedure call, message queuing, electronic mail, electronic data interchange.
·         Control: thread manager, transaction manager, resource broker, fine-grained request scheduler, coarse-grained job scheduler.
·         System Management: event notification, accounting, configuration manager, software installation manager, fault detector, recovery coordinator, authentication service, auditing service, encryption service, access controller.
To help solve heterogeneity and distributed computing problems, vendors are offering distributed system services that have standard programming interfaces and protocols. Standard programming interfaces make it easier to port applications to a variety of platforms, giving the customer some vendor-independence. Standard protocols enable programs to interoperate. These distributed system services are called middleware, because they sit ‘‘in the middle,’’ layering above the operating system and networking software and below industry-specific applications
For many new applications, middleware components are becoming more important than the underlying OS and networking services on which the applications formerly depended. For example, new applications often depend on a relational database system rather than the OS’s record-oriented file system and on a remote procedure call mechanism rather than transport-level messaging (e.g., send-message, receive-message). In general, middleware is replacing the non-distributed functions of OSs by distributed functions that use the network. For many applications, the programming interface provided by middleware defines the application’s computing environment.

Popular Posts