What is middleware?
Middleware is software that is used to bridge the gap between applications and operating systems. Middleware sits between an operating system and the applications that run on it to provide a method of communication and data management. This is useful for applications that otherwise would not have any way to exchange data -- such as with software tools and databases.
Middleware is used commonly, as many organizations and developers use middleware to build applications more efficiently. For example, middleware can be used in application integrations to link both applications together. Organizations that use multi-cloud and containerized environments will often also use middleware as a more cost-effective way to develop and scale applications.
Some examples of middleware activities include its use in handling data and API management, authentication and messaging services.
Why is it called middleware?
The name middleware stems from it being software that sits between the client-side requests on the front end and the back-end resource being requested.
A client can make a request with network-based interactions. That client is typically an application that resides on the front end, which is where the user interacts with the software. Resources such as databases, message queues, NoSQL data stores and file servers are often referred to as being part of the back end. Middleware will sit between these ends.
This article is part of
- Which also includes:
- Pros and cons of the 4 best IPaaS software options
- B2B (business-to-business)
How middleware works
Middleware abstracts communication processes between software components. This means applications written in multiple programming languages can still communicate with each other.
Middleware typically consists of components, such as the following:
- Management console. Provides an overview of the middleware's activities and configurations.
- Client interface. Communicates with the involved applications, databases or other services.
- Internal interface. Ensures middleware components function cohesively.
- Platform interface. Ensures compatibility among software.
- Contract manager. Defines the procedures for data exchange and ensures applications follow them.
- Session manager. Creates secure communication channels between the middleware and applications.
- Database manager. Integrates databases.
- Runtime monitor. Monitors middleware data continuously.
Why use middleware?
Middleware serves a variety of functions. First, it manages connectivity to various back-end resources. A middleware component might create a connection pool to provide fast and efficient access to a popular back-end database. It can also create connections to message queues and topics. Furthermore, a piece of middleware software may manage connections to cloud-based resources, like the Amazon Simple Storage Service (Amazon S3).
Second, middleware software has the capacity to implement logic based on the request made by the client. For example, a middleware component might recognize that a client browser making a given request has the language header set to English, and, as a result, the queries it makes to the back end might be tweaked to return nothing but English-based results. Or, perhaps a server could identify the geographical location of the client making the request based on its IP address and return data to the client that prioritizes results that are located close by. The ability to take a request from the user, perform logic and then customize the results is an important job performed by middleware software.
Third, middleware plays an important role in concurrent processing, load balancing and transaction management. Middleware software typically has the capacity to scale vertically and horizontally to help distribute incoming client requests over multiple servers, virtual machines or availability zones of the cloud. Middleware software can also handle concurrency and transaction management issues, such as dealing with problems that arise when two or more clients attempt to access or update a given back-end resource at the same time.
Finally, middleware plays an important role in securing access to back-end resources. Middleware software has the ability to challenge clients; it requires both a secure connection -- using a technology like SSL -- and authentication -- using either a username and password combination or a digital certificate. This security information is then used to check if the client making the request has the authority to access the data in question. If the rights are affirmed, the data is sent from the middleware server to the client using a secure and encrypted connection.
In general, IT industry analysts -- such as Gartner and Forrester Research -- put middleware into two categories: enterprise application integration middleware and platform middleware.
Enterprise application integration middleware enables programmers to create business applications without having to custom-craft integrations for each new application. In this situation, middleware helps software work together, providing a layer of functionality for data consistency and B2B integration.
Messaging services typically provided include SOAP, web services, REST or JSON. Other middleware technologies used include object request broker (ORB) and XML.
Businesses can purchase individual integration middleware products as on-premises products or cloud-based integration suites.
Platform middleware supports software development and delivery by providing a runtime hosting environment, such as a container, for application program logic. Platform middleware includes tools that support application development and delivery, such as web servers, application servers and content management systems (CMSes).
Generally, embedded or external communications platform middleware enables different communications tools to work together for application and service interaction. Resource management services, such as Microsoft Azure Resource Manager, host application program logic at runtime. Other components include Trusted Platform Modules (TPMs) and in-memory data grids (IMDGs).
Platform middleware products are also available as on premises or through a cloud platform suite.
Types of middleware
There are many examples of middleware, each created to fulfill specific functions in connecting applications, web and cloud services. Commonly used types of middleware include the following:
- Messaging middleware facilitates communications between distributed applications and services.
- Object or ORB middleware enables software components or objects to communicate and interact with a program -- such as containers -- across distributed systems.
- Remote Procedure Call (RPC) middleware provides a protocol that enables a program to request a service from another program located on a separate computer or network.
- Data or database middleware enables direct access to, and interaction with, databases; it typically includes SQL database software.
- Transaction or transactional middleware ensures transactions move from one phase to the next via transaction process monitoring.
- Content-centric middleware allows client-side requests for specific content and abstracts and delivers it; it's similar to publish/subscribe middleware like Apache Kafka.
- Embedded middleware facilitates communication and integration between embedded apps and real-time operating systems.
- API middleware enables developers to create and manage their application's APIs.
- Asynchronous data streaming middleware enables data sharing between applications by replicating data streams in an intermediate store.
Middleware products and providers
Middleware programs come in on-premises software and cloud services; they can be used independently or together, depending on the use case. While cloud providers bundle middleware into cloud services suites -- such as middleware as a service (MWaaS) or integration platform as a service (iPaaS) -- many businesses may choose independent middleware products that fit their specific needs.
Some vendors that offer middleware include the following:
- IBM with IBM Worklight, which is used for developing cross-platform mobile applications.
- Microsoft with Microsoft BizTalk, which is used for integration hubs and inter-organizational middleware systems.
- Red Hat with JBoss EAP, which is a middleware platform for enterprise applications using on-premises, virtual, private, public or hybrid cloud offerings.
- Oracle with Oracle Fusion Middleware, which is a middleware platform for enterprise applications that supports diverse app environments.
- Tibco with Tibco Connected Intelligence, which is a middleware platform for connecting software; it also provides an analytics data fabric for analyzing data in motion and at rest.
- SAP with SAP NetWeaver Mobile for mobile applications.
- Apache with Apache Camel, which provides an open source middleware for B2B and microservices-based environments.
Other vendors include WSO2 Carbon, Temenos Fabric and ScaleOut Software.
How to choose a middleware platform
Middleware should be chosen by considering what an individual or organization is looking to achieve with the middleware platform. For example, if middleware is needed for data management, then database middleware should be used. If middleware is needed for application services, then application server middleware should be used. The key idea is to find the right software according to the performance needed.
Some middleware will offer specific tools to help developers. For example, Red Hat offers functions for container-based processing. If a specific tool set stands out, then that specific middleware might be worth it. However, organizations should be sure that the middleware will work with the applications it's trying to connect.
Organizations should also compare reliability, complexity and performance with other middleware products -- as some performance speeds may vary.
Another factor to consider includes community support. A middleware tool with an active community to support means that developers can use customizable open source tools and better optimize their applications.
The evolution of middleware
In the 1980s, middleware was initially used to integrate newer and legacy programs without needing to rewrite the legacy program's code. It was also used in server-based and shared library instances.
As it grew in popularity, middleware was used to mediate an application's front end with a back-end resource. From 2000 until approximately 2010, middleware software was synonymous with the concept of an application server. However, since then, the applications of middleware started to grow.
Rather than deploy complete applications to middleware servers, developers can use middleware to create smaller, microservices-based applications. They then package those microservices with all of the knowledge required to connect to the back-end resources they need and deploy the applications within a lightweight, container-based system, such as Docker. The container is then deployed to a cloud-based service.
In this case, the middleware would be the combination of the microservice hosted within the container and the cloud computing infrastructure running the container. The use of containers with middleware helps developers connect to resources that are distributed across multiple clouds.
Learn more about the middleware tool Oracle Fusion and how it integrates customer data in this article.