Qu'est-ce qu'un middleware exactement?

203

J'ai entendu beaucoup de gens parler récemment de middleware , mais quelle est la définition exacte du middleware? Quand je regarde le middleware, je trouve beaucoup d'informations et de définitions, mais en lisant ces informations et définitions, il semble que la plupart des «marchandises» se trouvent au milieu de quelque chose. Alors, tout est middleware?

Ou avez-vous un exemple de logiciel qui n'est pas un middleware?

Michel
la source

Réponses:

219

Disons que votre entreprise fabrique 4 produits différents, votre client a 3 autres produits différents de 3 autres entreprises différentes.

Un jour, le client a pensé, pourquoi ne pas intégrer tous nos systèmes dans un seul système énorme. Dix minutes plus tard, leur service informatique a déclaré que cela prendrait 2 ans.

Vous (le développeur avisé) avez dit: pourquoi ne pas simplement intégrer tous les différents systèmes et les faire fonctionner ensemble dans un environnement homogène? Le gestionnaire de clientèle vous regarde ... Vous avez poursuivi, nous utiliserons un middleware, nous étudierons les entrées / sorties de tous les différents systèmes, les ressources qu'ils utilisent, puis choisirons un framework middleware approprié.

Expliquer toujours au gestionnaire non technique
Avec le framework Middleware au milieu, le premier système produira des trucs X, le système Y et Z consommerait ces sorties et ainsi de suite.

medopal
la source
Grand exemple! De cette façon, ne deviendra-t-il pas un environnement hétérogène? pas homogène.
Rabia Naz khan
Le middleware est un composant de données (agrégation + transformation).
suréchange
92

Le middleware est un terme terriblement nébuleux. Ce qui est "middleware" dans un cas ne le sera pas dans un autre. En général, vous pouvez vous attendre à ce que quelque chose classé comme middleware ait les caractéristiques suivantes:

  • Principalement (généralement exclusivement) des logiciels; n'a généralement pas besoin de matériel spécialisé.

  • Si ce n'était pas le cas, les applications qui en dépendent devraient l'intégrer dans leur application et subiraient beaucoup de duplication.

  • Il connecte presque certainement deux applications et transmet des données entre elles.

Vous remarquerez que c'est à peu près la même définition qu'un système d'exploitation. Ainsi, par exemple, une pile TCP / IP ou une mise en cache pourrait être considérée comme un middleware. Mais votre système d'exploitation pourrait également fournir les mêmes fonctionnalités. En effet, le middleware peut être pensé comme une extension spéciale d'un système d'exploitation, spécifique à un ensemble d'applications qui en dépendent. Il fournit simplement un service de niveau supérieur.

Quelques exemples de middleware:

  • cache distribué
  • file d'attente de messages
  • moniteur de transactions
  • réécriveur de paquets
  • système de sauvegarde automatisé
John Feminella
la source
20

Wikipedia a une assez bonne explication: http://en.wikipedia.org/wiki/Middleware

Ça commence par

Le middleware est un logiciel informatique qui connecte des composants logiciels ou des applications. Le logiciel se compose d'un ensemble de services qui permet à plusieurs processus s'exécutant sur une ou plusieurs machines d'interagir.

Ce qui est Middleware donne quelques exemples.

aioobe
la source
1
Je l'ai déjà trouvé moi-même, mais il semble que Wikipédia dise que tout est middleware ou avez-vous un exemple de logiciel qui n'est pas middleware
Michel
2
Je préciserais en ajoutant ... "une ou plusieurs machines pour interagir qui ne pourraient pas en natif". Sinon, d'accord, rien de mal à cette réponse.
jeriley
1
Mieux vaut dire "un ou plusieurs [processus] d'interaction qui ne pourraient pas nativement".
fstuijt
19

Il y a (au moins) trois définitions différentes que je connais

  • en informatique d'entreprise, le middleware est un logiciel de messagerie et d'intégration entre applications et services

  • dans les jeux, le middleware est à peu près tout ce qui est fourni par un tiers

  • dans (certains) systèmes logiciels embarqués, le middleware fournit des services que les applications utilisent, qui sont composés des fonctions fournies par la couche d'abstraction matérielle - il se situe entre la couche d'application et la couche d'abstraction matérielle.

Pete Kirkham
la source
15

Simplement mis Middleware est un composant logiciel qui fournit des services pour intégrer des systèmes disparates ensemble.

Dans un environnement d'entreprise complexe, il existe un certain nombre de défis lorsque vous devez intégrer deux ou plusieurs systèmes d'entreprise ensemble pour communiquer entre eux. Normalement, ces systèmes ne comprennent pas le langage de l'autre car ils sont développés sur différentes plates-formes en utilisant différents langages (comme C ++, Java, Cobol, etc.).

Voici donc un logiciel middleware en image qui fournit des services comme

  • transformation des formats de messages d'une application à une autre,
  • acheminer et enrichir les messages en plus de veiller à la sécurité,
  • chiffrement,
  • validation et
  • appliquer différentes règles métier à ces messages.

Un exemple typique de middleware est un produit ESB comme IBM Message Broker (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule et bien d'autres.

Par conséquent, le middleware se situe principalement entre les applications consommatrices de services et les applications des fournisseurs de services et aide ces applications à communiquer entre elles.

SAK123
la source
14

Le middleware concerne la façon dont notre application répond aux demandes entrantes. Les middlewares examinent la demande entrante et prennent des décisions en fonction de cette demande. Nous pouvons créer des applications entières uniquement à l'aide de middlewares. Par exemple, ASP.NET est un cadre Web comprenant les principaux composants middleware HTTP suivants.

  1. Gestion des exceptions / erreurs
  2. Serveur de fichiers statique
  3. Authentification
  4. MVC Middlewares

Comme le montre le diagramme ci-dessus, il existe divers composants middleware dans ASP.NET qui reçoivent la demande entrante et la redirigent vers une classe C # (dans ce cas, une classe de contrôleur).

Eldiyar Talantbek
la source
10

L'intergiciel est un terme général pour désigner un logiciel qui sert à «coller» des programmes séparés, souvent complexes et déjà existants. Certains composants logiciels fréquemment connectés aux middlewares incluent les applications d'entreprise et les services Web.

falcucci
la source
6

Il y a une définition commune dans le développement d'applications Web qui est (et je fais cette formulation mais elle semble correspondre): Un composant qui est conçu pour modifier une requête et / ou une réponse HTTP mais ne sert pas (généralement) la réponse dans son intégralité, conçu pour être enchaîné pour former un pipeline de changements de comportement pendant le traitement des demandes.

Exemples de tâches couramment implémentées par le middleware:

  • Compression de réponse Gzip
  • Authentification HTTP
  • Demande de journalisation

Le point clé ici est qu'aucun d'entre eux n'est entièrement responsable de répondre au client. Au lieu de cela, chacun modifie le comportement d'une manière ou d'une autre dans le cadre du pipeline, laissant la réponse réelle venir de quelque chose plus tard dans la séquence (pipeline).

Habituellement, les middlewares sont exécutés avant une sorte de "routeur", qui examine la demande (souvent le chemin) et appelle le code approprié pour générer la réponse.

Personnellement, je déteste le terme "middleware" pour sa généricité mais il est d'usage courant.

Voici une explication supplémentaire spécifiquement applicable à Ruby on Rails.

Brad Peabody
la source
6

Middleware se situe entre les applications Web et les services Web qui ne peuvent pas communiquer de manière native et sont souvent écrits dans différents langages / cadres.

Un tel exemple est l' OWIN middleware for .NETenvironnement, avant que les gens ne soient obligés d'héberger des applications Web dans un logiciel d'hébergement Microsoft appelé IIS. Après que owin ait été développé, il a ajouté la capacité d'héberger à la fois dans IIS et auto-hôte, dans IIS vient d'être ajouté le support pour Owin qui a fait office d'interface. Il est également devenu possible de le faire host .NET web apps on Linux via Mono, ce qui a encore ajouté le support pour Owin.

Il a également ajouté la capacité de créer Single Page Applications, Owin gérant le Httpcontexte de demande / réponse, donc en plus d'owin, vous pouvez ajouter de la authentication/authorizationlogique via OAuth2 par exemple, vous pouvez configurer un middleware pour enregistrer une classe qui contient la logique d'authentification de l'utilisateur (par exemple, mise en œuvre d'OAuth2) ou classe qui contient la logique de gestion des messages de demande / réponse http, de cette façon vous pouvez faire en sorte qu'une application communique avec d'autres applications / services via différents formats de données (comme json, xml, etc. si vous ciblez le web).

Daniel
la source
3

Quelques exemples de middleware: CORBA, Remote Method Invocation (RMI), ...

Les exemples mentionnés ci-dessus sont tous des logiciels vous permettant de prendre en charge la communication entre différents processus (soit en cours d'exécution sur la même machine, soit distribués sur Internet, par exemple).

fstuijt
la source
2

D'après ma propre expérience avec le travail Web, un middleware était un truc entre les utilisateurs (le navigateur Web) et la base de données principale. C'est le logiciel qui a pris les choses que les utilisateurs ont mises (par exemple: les commandes d'iPad, ont fait une logique commerciale magique, c'est-à-dire vérifier s'il y a suffisamment d'iPad disponibles pour remplir la commande) et a mis à jour la base de données principale pour refléter ces changements.

eviljack
la source
2

Il s'agit simplement d'un logiciel ou d'un outil sur lequel votre application s'exécute et des capacités de rappel en ce qui concerne la haute disponibilité, l'évolutivité, l'intégration avec d'autres logiciels ou systèmes sans vous soucier des changements de code au niveau de votre application.

Par exemple: Le système d'exploitation sur lequel votre application s'exécute nécessite un changement d'adresse IP, vous n'avez pas à vous en soucier dans votre code, c'est la pile middleware sur laquelle vous pouvez simplement mettre à jour la configuration.

Exemple 2: vous rencontrez des problèmes avec votre allocation de mémoire d'exécution et estimez que l'utilisation de votre application a augmenté, vous n'avez pas grand-chose à ce sujet sauf si vous avez un bogue ou un goulot d'étranglement dans votre code, il est facilement réalisable en ajustant la configuration du logiciel middleware sur que votre application exécute.

Exemple 3: Vous avez plusieurs logiciels disparates et vous en avez besoin pour se parler ou envoyer des données dans un format commun compréhensible par tous les systèmes, c'est là que les systèmes middleware sont utiles.

J'espère que les informations fournies vous aideront.

Afzal Haque
la source
2

il s'agit d'une couche logicielle entre le système d'exploitation et les applications de chaque côté d'un système informatique distribué dans un réseau. En fait, il relie des réseaux et des systèmes logiciels hétérogènes.

Maryam Sheikh
la source
0

Je l'ai toujours considéré comme le plus ancien logiciel que j'ai dû installer. L'application totale utilisait un serveur Web, un serveur de base de données et un serveur d'applications. Le serveur Web étant le middleware entre les données et l'application.

Meule
la source
0

Si je ne me trompe pas, dans le cadre d'application logicielle , en fonction du contexte , vous pouvez envisager middlewareles rôles suivants qui peuvent être combinés afin d'effectuer certaines activités entre l'utilisateur requestet l'application response.

  • Adaptateur
  • Désinfectant
  • Validateur
ANM Saiful Islam
la source