• Non ci sono risultati.

3.3 Feed

Ifeed web sono unità di informazioni formattata secondo specifiche stabilite prece-dentemente, infatti essi risultano interoperabili ed aventi contenuto interscambiabile fra le diverse applicazioni o piattaforme. La distribuzione di questi contenuti web può avvenire tramite due principali formati: RSSeAtom. Entrambi sono basati sullo standard XML.

Il formatoAtom è il più recente tra i due, ed ora è disponibile nella sua versione 1.0.

La sua giovane età è uno dei fattori che giustificano la minor diffusione rispetto alla concorrenza, e quindi anche una minore disponibilità di framework, parser e risorse che lo supportano. Sempre la recente creazione di questo formato non assicura la sua stabilità (ad esempio l’attuale versione 1.0 non presenta retro-compatibilità con le precedenti).

Il formato RSS (Really Simple Syndication) è sicuramente più maturo del suo di-retto concorrente, ed inoltre esso si presenta come meno restrittivo, e quindi più versatile in presenza di contenuti che non siano semplicemente testo RSSdefinisce una struttura adatta a contenere un insieme di notizie o informazioni, ciascuna delle quali composta da vari campi. essendo esso un formato predefinito, un qualunque lettore RSS potrà presentare in una maniera omogenea i dati provenienti dalle fonti più diverse. Questo formato nasce all’interno di netscape dove veniva utilizzato per gestire i contenuti del portalemy netscape network, successivamente fu adottato dalle comunità di blogger, cosa che aiutò molto la sua affermazione, facendolo di-ventare oggi un standard di fatto per quanto riguarda l’esportazione di contenuti web.Nel 2000 il W3C pubblicò la prima versione ufficiale diRSS: la 1.0. Contemporanea-mente veniva pubblicata un versione più vicina alla versione adottata inizialContemporanea-mente da Netscape, denominata 0.91, successivamente evolutasi nella versione 0.92 e attual-mente nella versione 2.0. Quest’ultima risulta attualattual-mente la più diffusa e, anche per questo motivo, è stata adottata per la realizzazione del progetto in esame.

Ifeed rsssono facilmente fruibili da strumenti software chiamati aggregatori di feed o feed reader. Essi sono molto comuni e molte volte addirittura integrati nel browser. Essi per interpretare unfeed rss ne eseguono il parser andando ad identificare i tag ed estraendo i valori utili alla visualizzazione. Questa operazione può essere facilmente implementata anche da entità client che rispondono ad un servizio che espone risorse tramite questa tecnologia.

I servizi che utilizzano tale tecnologia per esporre i dati hanno inoltre alcuni importan-ti vantaggi. Il primo tra tutimportan-ti è l’uimportan-tilizzo di un formato che risulta essere facilmente interpretabile da molte entità senza richiedere una approfondita conoscenza del servizio stesso, essendo ormai il formatoRSSuno standard di fatto.

L’utilizzo di un linguaggio standardizzato, come XML, per esporre le proprie risorse rende le risorse più facilmente consumabili. La semplicità intrinseca del formatoRSS rende possibile consumare il servizio anche per client molto semplici. Unfeed RSS è realizzato utilizzando lo standard XML ed è quindi composto da alcuni tag e attributi, alcuni di essi riguardanti il contesto globale, altri locali. Per quanto riguarda l’intero feed segnaliamo quelli richiesti come obbligatori:

title, che conterrà il titolo del nostro feed;

link, che conterrà l’indirizzo del sito web corrispondente al feed;

description, dove viene inserita la descrizione del servizio.

19 19 di 87

Per quanto riguarda gli elementi che compongo il feed, le informazioni ad essi collegate sono contenute all’interno del tag<item> il quale si compone di numerosi tag ‘‘figli’’, tra i quali i più rilevanti (e utilizzati al fine del progetto) sono:

title, contente il titolo del elemento;

link, contente il link all’ elemento;

description, dove è presente la descrizione dell’elemento;

pubData, riportante la data di pubblicazione del elemento;

enclosure, dove sono presenti gli elementi multimediali collegate all’item.

Si vuole fare notare che quanto appena descritto e valido per il formatoRSS. Nel caso di utilizzo del formatoAtom, in virtù della della più stringente e precisa rappresentazione delle informazioni, gli elementi obbligatori risultano essere in numero maggiore.

3.3.1 Feed e WCF

I feed sono semplicemente dati XML esposti tramite un URI HTTP. ed è il lettore di feed responsabile dell’esecuzione delle richieste tramite L’uri per mantenere ag-giornato il feed visualizzato dell’utente. È indubbio che lo scenario che si presenta con l’utilizzo di feed semplifica di molto l’invio e la ricezione di dati, unito poi alla grossa diffusione dei feed reader ha portato a considerare l’utilizzo di tale tecnologia non limitatamente all’esposizione di dati provenienti da blog e simili, ma anche per l’utilizzo in accoppiata con servizi e non solo.

Quindi, la creazione di un servizio, in particolare di un servizio RESTful, propone l’attrattiva di esporre tale servizio tramite feed rsso Atom (se il servizio è di sola lettura, altrimenti utilizzando il protocollo atomPub se il servizio prevede anche attività di scrittura).

WCFoltre a dare la possibilità di esporre servizi RESTful dà anche la possibilità di esporre feed, infatti creando un endpoint http-based sarà possibile esporre feed utilizzando entrambi i formati RSS e Atom. Per rendere l’esposizione dei feed più agevole,WCFmette a disposizione un infrastruttura ad oggetti che rende possibile la creazione di tali elementi senza dover conoscere a fondo la loro struttura, rendendone di fatto trasparente la complessità. Tale infrastruttura mette inoltre a disposizione metodi che si occupano della traduzione dei nostri oggetti nel corrispondente formato richiesto (sia esso Atom oRSS), rendendo trasparenti allo sviluppatore anche future modifiche al formato stesso.

Implementare un servizio che espone un feed richiede la creazione di un servizio RESTfulil quale contenga un metodo che ritorni il feed nel formato desiderato. La gestione del feed avverrà tramite l’utilizzo dei metodi e gli oggetti contenuti all’ inter-no del namespace System.ServiceModel.Syndication, il quale contiene in particolare l’oggetto principale per la rappresentazione di un feed: SyndicationFeed. la struttura di tale oggetto è riportata in Figura 3.2.

Questo oggetto ha lo scopo di implementare un feed generico (anche se il modello è in parte orientato verso l’utilizzo dello standardAtom), nel quale è possibile impostare proprietà, che andranno a popolare alcuni tag propri della strutture del nostro feed, ed inoltre tramite una collezione di oggetti FeedItemè possibile impostare la collezione di item contenuta nel feed. A seguito della creazione di un feed generico è possibile utilizzare le funzioniGetRss20FormatteroAtom10FeedFormatterper ottenere il feed rispettivamente in formatoRSSoAtom, e quindi renderlo disponibile per essere restituito tramite un servizio RESTful.

Luca Pasa 3.3. FEED

Figura 3.2: Struttura dell’oggetto SyndicationFeed.

Il namespace System.ServiceModel.Syndication contiene anche metodi per con-sumare un feed, infatti esso rende possibile la creazione di un oggettoSyndicationFeed, a partire dal codice XML che è possibile ottenere tramite una richiesta al servizio RESTfulche espone un feed. L’oggetto creato, rappresentante il feed, permette una semplice manipolazione dei dati rendendo possibile presentarli o processarli nella maniera desiderata.

21 21 di 87