Che cos'è esattamente il middleware?


203

Ho sentito molte persone parlare recentemente di middleware , ma qual è la definizione esatta di middleware? Quando guardo al middleware, trovo molte informazioni e alcune definizioni, ma mentre leggo queste informazioni e definizioni, sembra che quasi tutte le "merci" siano nel mezzo di qualcosa. Quindi, tutto è middleware?

Oppure hai un esempio di un prodotto che non è middleware?

Risposte:


219

Diciamo che la tua azienda produce 4 prodotti diversi, il tuo cliente ha altri 3 prodotti diversi da altre 3 società diverse.

Un giorno il cliente ha pensato, perché non integriamo tutti i nostri sistemi in un unico enorme sistema. Dieci minuti dopo il loro dipartimento IT ha dichiarato che ci vorranno 2 anni.

Tu (lo sviluppatore saggio) hai detto, perché non integriamo semplicemente tutti i diversi sistemi e li facciamo lavorare insieme in un ambiente omogeneo? Il gestore clienti ti fissa ... Hai continuato, useremo un Middleware, studieremo gli Input / Output di tutti i diversi sistemi, le risorse che usano e quindi scegliere un framework Middleware appropriato.

Spiegando ancora al responsabile non tecnico
Con il framework Middleware nel mezzo, il primo sistema produrrà elementi X, i sistemi Y e Z consumerebbero tali output e così via.


Ottimo esempio! In questo modo non diventerà un ambiente eterogeneo? non omogeneo.
Rabia Naz khan,

Il middleware è un componente di dati (aggregazione + trasformazione).
Scambiare il

92

Middleware è un termine terribilmente nebuloso. Ciò che è "middleware" in un caso non sarà in un altro. In generale, ci si può aspettare che qualcosa classificato come middleware abbia le seguenti caratteristiche:

  • Software principalmente (di solito esclusivamente); di solito non è necessario alcun hardware specializzato.

  • Se non ci fosse, le applicazioni che dipendono da esso dovrebbero incorporarlo come parte della loro applicazione e subirebbero molti duplicati.

  • Quasi certamente collega due applicazioni e passa i dati tra di loro.

Noterai che questa è praticamente la stessa definizione di un sistema operativo. Quindi, ad esempio, uno stack TCP / IP o la memorizzazione nella cache potrebbero essere considerati middleware. Ma il tuo sistema operativo potrebbe fornire anche le stesse funzionalità. In effetti, il middleware può essere pensato come un'estensione speciale di un sistema operativo, specifica per un insieme di applicazioni che dipendono da esso. Fornisce solo un servizio di livello superiore.

Alcuni esempi di middleware:

  • cache distribuita
  • coda messaggi
  • monitor delle transazioni
  • riscrittore di pacchetti
  • sistema di backup automatizzato

20

Wikipedia ha una spiegazione abbastanza buona: http://en.wikipedia.org/wiki/Middleware

Comincia con

Il middleware è un software per computer che collega componenti o applicazioni software. Il software è costituito da un insieme di servizi che consentono a più processi in esecuzione su una o più macchine di interagire.

Che cos'è Middleware fornisce alcuni esempi.


1
L'ho trovato da solo, ma sembra che Wikipedia dica che tutto è middleware o hai un esempio di un prodotto che non lo è middleware
Michel,

2
Vorrei chiarire aggiungendo ... "una o più macchine per interagire che nativamente non sarebbero in grado di". Altrimenti, d'accordo, niente di sbagliato in quella risposta.
Jeriley,

1
Meglio dire "uno o più [processi] per interagire che in modo nativo non sarebbe in grado di".
fstuijt,

19

Ci sono (almeno) tre diverse definizioni di cui sono a conoscenza

  • nel business computing, il middleware è un software di messaggistica e integrazione tra applicazioni e servizi

  • nei giochi, il middleware è praticamente tutto ciò che viene fornito da una terza parte

  • in (alcuni) sistemi software integrati, il middleware fornisce servizi che le applicazioni utilizzano, che sono composti dalle funzioni fornite dal livello di astrazione hardware - si trova tra il livello di applicazione e il livello di astrazione hardware.


15

In poche parole Middleware è un componente software che fornisce servizi per integrare sistemi diversi.

In un ambiente aziendale complesso, ci sono una serie di sfide quando è necessario integrare due o più sistemi aziendali insieme per parlare tra loro. Normalmente questi sistemi non comprendono le lingue degli altri poiché sono sviluppati su piattaforme diverse usando linguaggi diversi (come C ++, Java, Cobol, ecc.).

Quindi ecco che arriva il software middleware nella foto che fornisce servizi simili

  • trasformazione dei formati dei messaggi da un'app all'altra,
  • instradare e arricchire i messaggi oltre a prendersi cura della sicurezza,
  • crittografia,
  • validazione e
  • applicare regole commerciali diverse a questi messaggi.

Un tipico esempio di middleware è un prodotto ESB come IBM Message Broker (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule e molti altri.

Pertanto, il middleware si colloca principalmente tra le app che consumano servizi e le app dei provider di servizi e aiutano queste app a dialogare.


14

Il middleware riguarda il modo in cui la nostra applicazione risponde alle richieste in arrivo. I middleware esaminano la richiesta in arrivo e prendono decisioni in base a questa richiesta. Siamo in grado di creare intere applicazioni solo usando i middleware. Ad esempio, ASP.NET è un framework Web che comprende i seguenti componenti middleware HTTP principali.

  1. Gestione di eccezioni / errori
  2. File server statico
  3. Autenticazione
  4. MVC middleware

Come mostrato nel diagramma sopra, ci sono vari componenti di middleware in ASP.NET che ricevono la richiesta in arrivo e la reindirizzano a una classe C # (in questo caso una classe controller).


10

Middleware è un termine generale per software che serve a "incollare" programmi separati, spesso complessi e già esistenti. Alcuni componenti software che sono spesso connessi con il middleware includono applicazioni aziendali e servizi Web.


6

Esiste una definizione comune nello sviluppo di applicazioni Web che è (e sto elaborando questa formulazione ma sembra adattarsi): un componente progettato per modificare una richiesta e / o una risposta HTTP ma non (di solito) serve la risposta nella sua interezza, progettato per essere incatenato insieme per formare una pipeline di cambiamenti comportamentali durante l'elaborazione della richiesta.

Esempi di attività comunemente implementate dal middleware:

  • Compressione della risposta gzip
  • Autenticazione HTTP
  • Richiedi la registrazione

Il punto chiave qui è che nessuno di questi è completamente responsabile della risposta al cliente. Ognuno cambia il comportamento in qualche modo come parte della pipeline, lasciando che la risposta effettiva provenga da qualcosa più avanti nella sequenza (pipeline).

Di solito, i middleware vengono eseguiti prima di una sorta di "router", che esamina la richiesta (spesso il percorso) e chiama il codice appropriato per generare la risposta.

Personalmente, odio il termine "middleware" per la sua genericità, ma è di uso comune.

Ecco una spiegazione aggiuntiva specificamente applicabile a Ruby on Rails.


6

Middleware si frappone tra applicazioni Web e servizi Web che non possono comunicare in modo nativo e spesso sono scritti in lingue / framework diversi.

Un esempio è l' OWIN middleware for .NETambiente, prima che le persone di owin fossero costrette a ospitare app Web in un software di hosting Microsoft chiamato IIS. Dopo lo sviluppo di owin, ha aggiunto la capacità di ospitare sia in IIS sia in self host, in IIS è stato appena aggiunto il supporto per Owin che fungeva da interfaccia. Inoltre è possibile host .NET web apps on Linux via Mono, che ha aggiunto nuovamente il supporto per Owin.

Ha inoltre aggiunto la capacità di creare Single Page Applications, Owin gestendo il Httpcontesto di richiesta / risposta, quindi oltre a owin è possibile aggiungere la authentication/authorizationlogica tramite OAuth2, ad esempio, è possibile configurare il middleware per registrare una classe che contiene la logica dell'autenticazione dell'utente (ad esempio l'implementazione di OAuth2) o classe che contiene la logica di come gestire i messaggi di richiesta / risposta http, in questo modo è possibile far comunicare un'applicazione con altre applicazioni / servizi tramite diversi formati di dati (come json, xml, ecc. se si sta prendendo di mira il web).


3

Alcuni esempi di middleware: CORBA, Remote Method Invocation (RMI), ...

Gli esempi sopra menzionati sono tutti software che consentono di gestire la comunicazione tra processi diversi (in esecuzione sullo stesso computer o distribuiti ad esempio su Internet).


2

Dalla mia esperienza con il webwork, un middleware era roba tra gli utenti (il browser web) e il database back-end. È stato il software a prendere le cose che gli utenti hanno inserito (esempio: ordini per iPad, hanno fatto una logica di business magica, cioè controlla se ci sono abbastanza iPad disponibili per riempire l'ordine) e ha aggiornato il database di backend per riflettere tali cambiamenti.


2

È solo un pezzo di software o uno strumento su cui la tua applicazione esegue e capacità di relazione rispetto all'alta disponibilità, scalabilità, integrazione con altri software o sistemi senza che ti preoccupi delle modifiche al codice a livello di applicazione.

Ad esempio: il sistema operativo su cui viene eseguita l'applicazione richiede una modifica dell'IP, non è necessario preoccuparsene nel codice, è lo stack del middleware su cui è possibile aggiornare semplicemente la configurazione.

Esempio 2: riscontri problemi con l'allocazione della memoria di runtime e ritieni che l'utilizzo della tua applicazione sia aumentato, non devi fare molto a meno che tu non abbia un bug o un collo di bottiglia nel codice, è facilmente realizzabile ottimizzando la configurazione del software middleware su quale viene eseguita l'applicazione.

Esempio 3: disponi di più software disparati e hai bisogno che parlino tra loro o invii dati in un formato comune che sia comprensibile da tutti i sistemi, quindi è qui che i sistemi middleware sono utili.

Spero che le informazioni fornite siano di aiuto.


2

è un livello software tra il sistema operativo e le applicazioni su ciascun lato di un sistema di elaborazione distribuito in una rete. Di fatto collega reti eterogenee e sistemi software.


0

L'ho sempre pensato come il software più vecchio che ho dovuto installare. L'app totale utilizzava un server Web, un server di database e un server delle applicazioni. Il web server è il middleware tra i dati e l'app.


0

Se non sbaglio, nel framework delle applicazioni software , in base al contesto , è possibile prendere middlewarein considerazione i seguenti ruoli che possono essere combinati al fine di svolgere determinate attività tra l'utente requeste l'applicazione response.

  • Adattatore
  • Disinfettante
  • Validator
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.