Un middleware est un type de logiciel qui fournit aux applications des services complémentaires à ceux offerts par le système d'exploitation . On peut le décrire comme une « colle logicielle ».
Les intergiciels facilitent la mise en œuvre des communications et des entrées/sorties par les développeurs de logiciels , leur permettant ainsi de se concentrer sur l'objectif spécifique de leur application. Ils ont gagné en popularité dans les années 1980 comme solution au problème de la liaison des nouvelles applications aux anciens systèmes existants, bien que le terme soit utilisé depuis 1968.
Le terme est le plus souvent utilisé pour désigner les logiciels permettant la communication et la gestion des données dans les applications distribuées . Un atelier de l'IETF en 2000 a défini le middleware comme « les services situés au-dessus de la couche transport (c'est-à-dire sur TCP/IP) mais en dessous de l'environnement applicatif » (c'est-à-dire en dessous des API applicatives ). Dans ce sens plus précis, le middleware peut être comparé au tiret (« - ») dans client-serveur , ou au « -to- » dans pair-à-pair . Le middleware inclut les serveurs web , les serveurs d'applications , les systèmes de gestion de contenu et les outils similaires qui prennent en charge le développement et la distribution d'applications.
ObjectWeb définit le middleware comme : « La couche logicielle qui se situe entre le système d’exploitation et les applications de part et d’autre d’un système informatique distribué au sein d’un réseau. » Les services pouvant être considérés comme du middleware incluent l’intégration d’applications d’entreprise , l’intégration de données , le middleware orienté messages (MOM), les courtiers de requêtes d’objets (ORB) et le bus de services d’entreprise (ESB).
Les services d'accès aux bases de données sont souvent qualifiés d'intergiciels. Certains sont des implémentations spécifiques à un langage et prennent en charge des fonctionnalités hétérogènes ainsi que d'autres fonctionnalités de communication connexes. Parmi les exemples d'intergiciels orientés bases de données, on peut citer ODBC , JDBC et les moniteurs de traitement transactionnel .
Les intergiciels des systèmes informatiques distribués peuvent être globalement divisés en deux catégories : ceux qui fournissent des services en temps réel (comme le traitement des requêtes web) et ceux qui fonctionnent en temps machine. Ces derniers sont en partie standardisés par le Service Availability Forum et sont couramment utilisés dans les systèmes embarqués complexes des secteurs des télécommunications, de la défense et de l’aérospatiale .
Utilisation d'un intergiciel
De nombreuses catégories de middleware ont été définies, en fonction du domaine dans lequel elles sont utilisées ou du module d'application qu'elles servent. Une bibliographie récente a identifié les principales catégories de middleware comme suit :
- Transactionnel : Traitement de multiples transactions synchrones/asynchrones, servant de groupe de requêtes associées provenant de systèmes distribués, telles que les transactions bancaires ou les paiements par carte de crédit.
- Orienté messages : architectures de file d’attente et de passage de messages prenant en charge la communication synchrone/asynchrone.
- Procédural : Architectures distantes et locales pour connecter, transmettre et récupérer les réponses logicielles des communications de systèmes asynchrones telles qu'une opération d'appel.
- Orienté objet : Similaire aux intergiciels procéduraux, mais intégrant les principes de conception de la programmation orientée objet . Sur le plan analytique, son composant logiciel comprend des références d’objets, des exceptions et l’héritage de propriétés via des requêtes d’objets distribuées.
Autres exemples
Le terme « middleware » est également utilisé dans d'autres contextes. Il est parfois employé de manière similaire à un pilote logiciel : une couche d'abstraction qui masque les détails relatifs aux périphériques matériels ou aux autres logiciels à une application.
- Le système d'exploitation Android utilise le noyau Linux comme base et fournit un framework applicatif que les développeurs intègrent à leurs applications. De plus, Android propose une couche intermédiaire comprenant des bibliothèques offrant des services tels que le stockage de données, l'affichage, le multimédia et la navigation web. La compilation des bibliothèques intermédiaires en langage machine garantit une exécution rapide des services. Ces bibliothèques implémentent également des fonctions spécifiques à chaque appareil, ce qui permet aux applications et au framework de s'affranchir des variations entre les appareils Android. La couche intermédiaire d'Android contient également la machine virtuelle ART et ses bibliothèques Java principales.
- Le terme « middleware » désigne également le logiciel qui sépare deux ou plusieurs API et fournit des services tels que la limitation du débit, l'authentification et la journalisation.
- Les logiciels de moteur de jeu tels que Gamebryo et RenderWare sont parfois décrits comme des intergiciels car ils fournissent des services pour simplifier le développement de jeux.
- En technologie de simulation, le middleware est généralement utilisé dans le contexte de l' architecture de haut niveau (HLA) qui s'applique à de nombreuses simulations distribuées. Il s'agit d'une couche logicielle située entre le code applicatif et l' infrastructure d'exécution . Le middleware se compose généralement d'une bibliothèque de fonctions et permet à plusieurs applications (simulations ou fédérés, selon la terminologie HLA) d' accéder à ces fonctions depuis une bibliothèque commune plutôt que de les recréer pour chaque application.
- Dans les ordinateurs x86, UEFI/BIOS est un logiciel intermédiaire entre le système d'exploitation et le matériel .
- Les développeurs de réseaux sans fil peuvent utiliser des intergiciels pour relever les défis liés aux réseaux de capteurs sans fil (RCS). La mise en œuvre d'une application intergiciel permet aux développeurs de RCS d'intégrer les systèmes d'exploitation et le matériel à la grande variété d'applications actuellement disponibles.
- Le système d'exploitation QNX offre un middleware pour fournir des services multimédias destinés à être utilisés dans les automobiles , les avions et d'autres environnements.
- Les kits logiciels d'identification par radiofréquence (RFID) fournissent un intergiciel pour filtrer les données brutes bruitées et redondantes.