The present invention relates generally to middleware, and relates more particularly to the assembly of a middleware system from discrete middleware components. Specifically, the present invention provides a method and apparatus for dynamic assembly and adaptation of middleware components.
Systems software that functions as an intermediary between different components (e.g., applications and services) is generally referred to in the computer industry as middleware. Middleware is a mechanism used to simplify the development of software systems by adding one layer of indirection between the operating system and the application. It is often employed to integrate and coordinate the interoperation of distributed, heterogeneous applications over a network. For example, middleware may allow a program written for access to a particular database to access other databases as well. Middleware is also used by applications to coordinate updates to multiple databases. In yet another example, middleware may also allow a program written in one programming language to interoperate with a (seemingly incompatible) program written in a different programming language. In all cases, the role of middleware is to functionally mediate between (software, hardware and networking) infrastructure and applications; middleware is specialized software that enables other software (e.g., applications and services) to interoperate.
Traditional middleware models, while configurable, are static; that is, specific middleware components with specific sets of features and functions are typically selected prior to application development, deployment and execution. The middleware components are installed on a specific client at which an application executes, and execution of application programs by the client is limited to the installed middleware technology.
When middleware is deployed within a service-oriented architecture, such a static model may not be optimal. In such architectures, applications will tend to dynamically find and interact with each other. Thus, the required or desired features and functions to be provided by the middleware may not be known until runtime (e.g., for services only discovered at runtime), may depend on changing system conditions (e.g., network load or global security policies), or may change over time as new versions of middleware features and functions become available.
Thus, there is a need in the art for a method and apparatus for dynamic middleware assembly.