Middleware...
Middleware is computer software that connects software components or applications. The software consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support and simplify complex, distributed applications. It includes web servers, application servers, and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture.
It sits "in the middle" between application software working on different operating systems. It is similar to the middle layer of a three-tier single system architecture, except that it is stretched across multiple systems or applications. Examples include database systems, telecommunications software, transaction monitors, and messaging-and-queueing software.
The distinction between operating system and middleware functionality is, to some extent, arbitrary. While core kernel functionality can only be provided by the operating system itself, some functionality previously provided by separately sold middleware is now integrated in operating systems. A typical example is the TCP/IP stack for telecommunications, nowadays included in virtually every operating system.
In simulation technology, middleware is generally used in the context of the high level architecture (HLA) that applies to many distributed simulations. It is a layer of software that lies between the application code and the run-time infrastructure. Middleware generally consists of a library of functions, and enables a number of applications – simulations or federates in HLA terminology – to page these functions from the common library rather than re-create them for each application
Definitions (more definitions)
Middleware is the enabling technology of enterprise application integration. It describes a piece of software that connects two or more software applications, allowing them to exchange data.
ObjectWeb defines middleware as: "The software layer that lies between the operating system and applications on each side of a distributed computing system in a network."
Use of middleware
Middleware services provide a more functional set of application programming interfaces to allow an application to:
- Locate transparently across the network, thus providing interaction with another service or application
- Be independent from network services
- Be reliable and available always
when compared to the operating system and network services.
Types of middleware
Hurwitz's classification system organizes the many types of middleware that are currently available. These classifications are based on scalability and recoverability:
- Remote Procedure Call — Client makes calls to procedures running on remote systems. Can be asynchronous or synchronous.
- Message Oriented Middleware — Messages sent to the client are collected and stored until they are acted upon, while the client continues with other processing.
- Object Request Broker — This type of middleware makes it possible for applications to send objects and request services in an object-oriented system.
- SQL-oriented Data Access — middleware between applications and database servers.
Other sources include these additional classifications:
- Transaction processing monitors — Provides tools and an environment to develop and deploy distributed applications.
- Application servers — software installed on a computer to facilitate the serving (running) of other applications.
- Enterprise Service Bus — An abstraction layer on top of an Enterprise Messaging System.
Middleware usage in the video games industry
The video games industry use middleware when developing various games. It involves the development of games engines, including such things as the physics engines which can be repurposed for different games, renderware, and other software tools that assist with the production of the games software. These middleware tools greatly decrease the amount of development time that developers need to spend on programming for each game and represents a move towards some standardisation within the industry. Middleware tools help gaming developers to meet their marketing deadlines whilst also allowing more time for creative design. This is important as incompatibility of the creative ethos of game designers and the corporate environment and expectations of traditional media giants goals and perspectives may differ and lead to poorly designed video games being rushed out due to marketing deadlines. An example of this occurred in the 1980s with the meltdown of Atari a video game software company and Timewarner a media giant conglomerate.