Estendibilità della diffusione

L'API di diffusione è progettata per fornire un modello di programmazione di formato neutro che consente di scrivere in rete il 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.

Una funzionalità chiave dei protocolli di diffusione è l'estensibilità. Sia Atom 1.0 che RSS 2.0 aggiungono attributi ed elementi ai feed di diffusione che non sono definiti nelle specifiche. Il modello di programmazione della diffusione WCF (Windows Communication Foundation) offre le modalità seguenti di utilizzare attributi personalizzati ed estensioni, accesso non fortemente tipizzato e derivazione di una nuova classe.

Accesso non fortemente tipizzato

L'aggiunta di estensioni tramite la derivazione di una nuova classe richiede che venga scritto codice aggiuntivo. Un'altra opzione consiste nell'accedere alle estensioni in modo non fortemente tipizzato. Tutti i tipi definiti nel modello di dati astratto di diffusione contengono le proprietà denominate AttributeExtensions e ElementExtensions (con un'eccezione, SyndicationContent ha una proprietà AttributeExtensions ma nessuna proprietà ElementExtensions). Queste proprietà sono raccolte di estensioni non elaborate rispettivamente dai metodi TryParseAttribute e TryParseElement. È possibile accedere a queste estensioni non elaborate chiamando SyndicationElementExtensionCollection.ReadElementExtensions sulla proprietà ElementExtensions di SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson e SyndicationCategory. Questo set di metodi cerca tutte le estensioni con il nome e lo spazio dei nomi specificati, le deserializza singolarmente in istanze di TExtension e le restituisce come una raccolta di oggetti TExtension.

Derivazione di una nuova classe

È possibile derivare una nuova classe da qualsiasi classe di modello di dati astratto esistente. Adottare questo approccio quando si implementa un'applicazione in cui la maggior parte dei feed utilizzati ha un'estensione particolare. In questo argomento, la maggior parte dei feed utilizzati dal programma contiene un'estensione MyExtension. Per offrire una migliore esperienza di programmazione, eseguire le operazioni seguenti:

Vedi anche