# Mash-up (informatica)

In informatica un mash-up è un sito o un'applicazione web di tipo ibrido, cioè tale da includere dinamicamente informazioni o contenuti provenienti da più fonti. Un esempio potrebbe essere un programma che, acquisendo da un sito web una lista di appartamenti, ne mostra l'ubicazione utilizzando il servizio Google Maps per evidenziare il luogo in cui gli stessi appartamenti sono localizzati.
Mash-up (letteralmente: "poltiglia"), in termini informatici, indica un'applicazione che usa contenuti da più sorgenti per creare un servizio completamente nuovo. Il contenuto dei mash-up è normalmente preso da terzi via API, tramite feed (es. RSS e Atom) o JavaScript. I mash-up stanno rivoluzionando lo sviluppo del web permettendo a chiunque di combinare dati da siti come Amazon.com, eBay, Google, Windows Live e Yahoo! in modi innovativi. Sono semplici da progettare: richiedono minime conoscenze tecniche e quindi sono solitamente creati da contributori inusuali. I mashup sono uno degli elementi del cosiddetto web 2.0.

## Tipi di mashup

Esistono molti tipi di mashup, come mashup aziendali, mashup consumer e mashup dati. Il tipo più comune di mashup è il mashup consumer, rivolto al grande pubblico.
* I mashup aziendali definiscono applicazioni che combinano le proprie risorse, applicazioni e dati con altri servizi Web esterni. Concentrano i dati in un'unica presentazione e consentono un'azione collaborativa tra aziende e sviluppatori. Questo funziona bene per un progetto di sviluppo agile, che richiede la collaborazione tra gli sviluppatori e il cliente (o il proxy del cliente, in genere un product manager) per la definizione e l'implementazione dei requisiti aziendali. I mashup aziendali sono applicazioni Web sicure e visivamente ricche che espongono informazioni utilizzabili da diverse fonti di informazioni interne ed esterne.
* I mashup dei consumatori combinano i dati da più fonti pubbliche nel browser e li organizzano tramite una semplice interfaccia utente del browser.
* I mashup di dati, che al contrario dei mashup consumer, combinano tipi simili di media e informazioni da più fonti in un'unica rappresentazione. La combinazione di tutte queste risorse crea un nuovo e distinto servizio Web che non era stato originariamente fornito da nessuna delle due fonti.

### Per tipo di API

I mashup possono anche essere classificati in base al tipo di API di base che utilizzano, ma ognuno di questi può essere combinato tra loro o incorporato in altre applicazioni.

#### Tipi di dati

* Dati indicizzati (documenti, weblog, immagini, video, articoli per lo shopping, ...) utilizzati dai motori di metasearch
* Dati cartografici e geografici: software di geolocalizzazione, geovisualizzazione
* Feed, podcast: aggregatori di notizie

#### Funzioni

* Convertitori di dati: traduttori di lingua, elaborazione vocale , abbreviazioni di URL...
* Comunicazione: e-mail, messaggistica istantanea, notifiche...
* Rendering visivo dei dati: visualizzazione delle informazioni, diagrammi
* Relativo alla sicurezza: sistemi di pagamento elettronico, identificazione ID...
* Editori

## Mashup contro portali

Mashup e portali sono entrambe tecnologie di aggregazione dei contenuti. I portali sono una vecchia tecnologia progettata come estensione delle tradizionali applicazioni Web dinamiche, in cui il processo di conversione del contenuto dei dati in pagine Web contrassegnate è suddiviso in due fasi: generazione di "frammenti" di markup e aggregazione dei frammenti in pagine.
| | Portale | Mashup |
| Classificazione | Tecnologia precedente, estensione del modello di server Web tradizionale utilizzando un approccio ben definito | Utilizza tecniche "Web 2.0" più recenti e vagamente definite |
| Filosofia/ approccio | Approccia l'aggregazione suddividendo il ruolo del server Web in due fasi: generazione di markup e aggregazione di frammenti di markup | Utilizza le API fornite da diversi siti di contenuto per aggregare e riutilizzare il contenuto in un altro modo |
| Dipendenze del contenuto | Aggrega frammenti di markup orientati alla presentazione (HTML, WML, VoiceXML, ecc.) | Può operare su contenuto XML puro e anche su contenuto orientato alla presentazione (ad esempio, HTML) |
| Dipendenze di posizione | Tradizionalmente, l'aggregazione dei contenuti avviene sul server | L'aggregazione dei contenuti può avvenire sul server o sul client |
| Stile di aggregazione | Stile " Salad bar": i contenuti aggregati vengono presentati "fianco a fianco" senza sovrapposizioni | Stile "melting pot": i contenuti individuali possono essere combinati in qualsiasi modo, dando vita a contenuti ibridi strutturati arbitrariamente |
| Modello di evento | I modelli di eventi di lettura e aggiornamento vengono definiti tramite un'API portlet specifica | Le operazioni CRUD si basano sui principi dell'architettura REST, ma non esistono API formali |
| Standard pertinenti | Il comportamento del portlet è regolato dagli standard JSR 168, JSR 286 e WSRP, sebbene il layout della pagina del portale e la funzionalità del portale non siano definiti e specifici del fornitore | Gli standard di base sono XML scambiati come REST o Web Services. RSS e Atom sono comunemente usati. Un'alternativa è EMML. |

## Aspetti architettonici dei mashup

L'architettura di un mashup è suddivisa in tre livelli:
* Presentazione/interazione utente: questa è l'interfaccia utente dei mashup. Le tecnologie utilizzate sono HTML/XHTML, CSS, JavaScript, JavaScript asincrono e Xml (Ajax) .
* Servizi Web: è possibile accedere alle funzionalità del prodotto utilizzando i servizi API. Le tecnologie utilizzate sono XMLHTTPRequest, XML-RPC, JSON-RPC, SOAP, REST.
* Dati: gestione dei dati come invio, archiviazione e ricezione. Le tecnologie utilizzate sono XML, JSON, KML.