Architettura di diffusione

L'API di diffusione è progettata per fornire un modello di programmazione indipendente dal formato, che consente di scrivere in rete contenuto diffuso in molteplici formati. Il modello di dati astratto è costituito dalle classi seguenti:

Queste classi eseguono il mapping in modo rigoroso ai costrutti definiti nella specifica Atom 1.0, anche se alcuni dei nomi sono diversi.

In Windows Communication Foundation (WCF), i feed di diffusione sono modellati come un altro tipo di operazione del servizio, quello in cui il tipo restituito è una delle classi derivate di SyndicationFeedFormatter. Il recupero di un feed è modellato come uno scambio di messaggi richiesta-risposta. Un client invia una richiesta al servizio e il servizio risponde. Il messaggio di richiesta viene impostato su un protocollo dell'infrastruttura, ad esempio il protocollo HTTP non elaborato, e il messaggio di risposta contiene un payload costituito da un formato di diffusione noto (RSS 2.0 o Atom 1.0). I servizi che implementano questi scambi di messaggi vengono definiti servizi di diffusione.

Il contratto di un servizio di diffusione è costituito da un set di operazioni che restituisce un'istanza della classe SyndicationFeedFormatter. Nell'esempio seguente viene illustrata una dichiarazione di interfaccia per un servizio di diffusione.

Il supporto di diffusione viene generato sul modello di programmazione Web WCF che definisce l'associazione WebHttpBinding, utilizzata in combinazione con WebHttpBehavior per rendere disponibili feed come servizi. Per ulteriori informazioni sul modello di programmazione Web WCF, vedere Panoramica del modello di programmazione Web WCF.

Nota

La specifica Atom 1.0 consente di specificare secondi frazionari in uno qualsiasi dei costrutti data. I secondi frazionari verranno ignorati dall'implementazione WCF durante la fase di serializzazione e deserializzazione.

Modello a oggetti

Il modello a oggetti per la diffusione è costituito dai gruppi di classi riportati nelle tabelle seguenti.

Classi di formattazione

Classe Descrizione

Atom10FeedFormatter

Classe che serializza un'istanza di SyndicationFeed in formato Atom 1.0.

Atom10FeedFormatter

Classe che serializza le classi derivate da SyndicationFeed in formato Atom 1.0.

Atom10ItemFormatter

Classe che serializza un'istanza di SyndicationItem in formato Atom 1.0.

Atom10ItemFormatter

Classe che serializza le classi derivate da SyndicationItem in formato Atom 1.0.

Rss20FeedFormatter

Classe che serializza un'istanza di SyndicationFeed in formato RSS 2.0.

Rss20FeedFormatter

Classe che serializza le classi derivate da SyndicationFeed in formato RSS 2.0.

Rss20ItemFormatter

Classe che serializza un'istanza di SyndicationItem in formato RSS 2.0.

Rss20ItemFormatter

Classe che serializza le classi derivate da SyndicationItem in formato RSS 2.0.

Classi del modello a oggetti:

Classe Descrizione

SyndicationCategory

Classe che rappresenta la categoria di un feed di diffusione.

SyndicationContent

Classe di base che rappresenta il contenuto di diffusione.

SyndicationElementExtension

Classe che rappresenta un'estensione degli elementi di diffusione.

SyndicationElementExtensionCollection

Insieme di oggetti SyndicationElementExtension.

SyndicationFeed

Classe che rappresenta un oggetto feed di livello superiore.

SyndicationItem

Classe che rappresenta un elemento del feed.

SyndicationLink

Classe che rappresenta un collegamento all'interno di un feed di diffusione o di un elemento del feed.

SyndicationPerson

Classe che rappresenta un costrutto Person di Atom.

SyndicationVersions

Classe che rappresenta le versioni del protocollo di diffusione supportato.

TextSyndicationContent

Classe che rappresenta qualsiasi contenuto SyndicationItem da visualizzare per un utente finale.

TextSyndicationContentKind

Enumerazione che rappresenta i diversi tipi di contenuto di diffusione testo supportati.

UrlSyndicationContent

Classe che rappresenta il contenuto di diffusione costituito da un URL di un'altra risorsa.

XmlSyndicationContent

Classe che rappresenta il contenuto di diffusione non destinato alla visualizzazione in un browser.

Le astrazioni dati di base nel modello a oggetti sono Feed e Item, che corrispondono alle classi SyndicationFeed e SyndicationItem. Un Feed espone alcuni metadati di livello feed, ad esempio Title, Description e Author, un percorso per la memorizzazione di estensioni sconosciute e un set di elementi che costituiscono il resto del contenuto di informazioni del feed. Un Item rende disponibili alcuni metadati di livello elemento, ad esempio, Title, Summary e PublicationDate, un percorso per archiviare estensioni sconosciute e un elemento contenuto che include il resto del contenuto di informazioni dell'elemento. Le astrazioni di base di Feed e Item sono supportate da ulteriori classi che rappresentano costrutti dati comuni a cui si fa riferimento nelle specifiche Atom 1.0 e RSS.

Le informazioni veicolate in un'istanza di Feed possono essere convertite in una varietà di formati XML. Il processo di conversione da e verso XML viene gestito dalla classe SyndicationFeedFormatter. Questa classe è astratta; ne vengono fornite implementazioni concrete Atom10FeedFormatter e Rss20FeedFormatter per Atom 1.0 e RSS 2.0. Per utilizzare classi Feed derivate, utilizzare Atom10FeedFormatter o Rss20FeedFormatter, poiché consentono di specificare una classe Feed derivata. Per utilizzare classi di elementi derivate, utilizzare Atom10ItemFormatter o Rss20ItemFormatter, poiché consentono di specificare una classe di elementi derivata. Le terze parti possono derivare la propria implementazione di SyndicationFeedFormatter per supportare formati di diffusione diversi.

Estendibilità

  • Una funzionalità chiave dei protocolli di diffusione è l'estendibilità. Sia Atom 1.0 che RSS 2.0 consentono di aggiungere ai feed di diffusione attributi ed elementi che non sono definiti nelle specifiche. Il modello di programmazione della diffusione WCF prevede due modalità di utilizzo di attributi ed estensioni personalizzati: derivazione di una nuova classe e accesso non fortemente tipizzato. Per ulteriori informazioni, vedere Estendibilità della diffusione.

Vedere anche

Concetti

Panoramica sulla diffusione WCF
Modalità di mapping del modello a oggetti di diffusione WCF ad Atom e RSS