# Programari intermediari

Programari intermediari (middleware, en anglès) es defineix com la capa de programari que es troba entre el sistema operatiu i les aplicacions del sistema. El principal objectiu del programari intermediari és ajudar a resoldre els problemes de connectivitat i interoperabilitat entre aplicacions, servint de traductor entre diferents tecnologies i protocols. És a dir, que qualsevol aplicació (independentment del seu origen) es pugui executar sota qualsevol sistema operatiu o maquinari, facilitant així el desenvolupament de la mateixa i amagant detalls de programació de baix nivell.
Estrictament parlant el programari intermediari no és imprescindible pel correcte desenvolupament d'un procés d'integració però sí que és cert que la seva utilització simplifica molt aquests processos.
Una aplicació comú per a un programari intermediari és permetre que programes desenvolupats per accedir a determinades bases de dades puguin accedir a altres bases de dades. També és comú el seu ús com a servei de missatgeria, permeten així que diferents aplicacions es puguin comunicar fàcilment.
Adaptat al món de la televisió, el programari intermediari serveix de plataforma d'enllaç entre els diferents proveïdors de serveis interactius i els diferents suports físics de descodificació (receptor de televisió). Els programaris intermediaris amb més implantació a són el MHP i el MediaHighway.

## Funcions del programari intermediari

El programari intermediari proporciona les següents funcions:
* Homogeneïtzar els diferents components del maquinari, sistemes operatius i protocols de comunicació.
* En sistemes distribuïts, ocultar el fet que normalment una aplicació està formada per diferents parts interconnectades que s'executen en diferents localitzacions.
* Proporcionar interfícies uniformes d'alt nivell pels desenvolupadors i integradors d'aplicacions, facilitant la composició, reutilització, portabilitat i interoperabilitat d'aquestes aplicacions.
* Proveir un sistema de serveis comuns per realitzar diverses funcions de finalitats generals, per tal d'evitar el duplicat d'esforços i facilitar la col·laboració entre les aplicacions.

## Tipus de programari intermediari
### Estacions de missatgeria

Les estacions de missatgeria (EM) proporcionen assistència als sistemes en referència a la gestió del mitjà de comunicació. Concretament alliberen a les aplicacions de la tasca que suposa mantenir els paràmetres de la connexió i gestionen directament amb elles l'enviament i recepció de missatges. Amb una EM l'únic que requereixen saber les aplicacions és com intercanviar missatges amb ella.
La EM assumeix el compromís de fer arribar els missatges al seu destí d'una manera ràpida i segura aparti de paràmetres de qualitat i acords de nivell de servei. Aquests acords s'expressen en termes d'un temps màxim d'entrega, reenviament fins a un número determinat de vegades o si el sistema remot no està disponible, etc. Les EM acostumen a ocupar el centre d'una topologia en estrella.

### Motors d'integració

Els motors o brokers d'integració (MInt) van aparèixer como una evolució de les EM. Els MInt hereten totes les característiques de les EM i incorporen un nou tipus de funcionalitats basades en la interpretació i tractament dels missatges (recordem que les EM no intervenien en el contingut dels missatges).
Entre els nous serveis cal destacar la traducció de missatges i l'encaminament basat en el contingut. També utilitzen topologia en estrella.

### Busos d'integració

És un tipus de programari intermediari dissenyat per a superar les limitacions dels MInt i respondre a les necessitats d'integració a una escala superior a la considerada fins aquell moment.
La mesura d'aquesta nova escala la proporciona el concepte d'organització estesa, és a dir aquella amb diverses seus, fins i tot repartides per diferents continents i que a la vegada estableixen processos amb altes organitzacions sobre les quals no té cap control del seu sistema d'informació o comunicació.
Els ESB poden estar físicament distribuïts en diferents segments però constitueixen una unitat lògica mitjançant topologia bus.
Viccionari