Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'API di diffusione è progettata per fornire un modello di programmazione indipendente dal formato che consente la scrittura di contenuto diffuso in rete in un'ampia gamma di formati. Il modello di dati astratto è costituito dalle classi seguenti:
Queste classi sono strettamente mappate ai costrutti definiti nella specifica Atom 1.0, anche se alcuni nomi sono diversi.
Una funzionalità chiave dei protocolli di diffusione è l'estendibilità. Sia Atom 1.0 che RSS 2.0, aggiungono attributi ed elementi ai feed di diffusione non definiti nelle specifiche. Il modello di programmazione di diffusione di Windows Communication Foundation (WCF) fornisce i modi seguenti per utilizzare attributi ed estensioni personalizzati, l'accesso libero tipizzato e la derivazione di una nuova classe.
Accesso tipizzato in modo libero
L'aggiunta di estensioni derivando una nuova classe richiede la scrittura di codice aggiuntivo. Un'altra opzione consiste nell'accedere alle estensioni in modo non tipizzato. Tutti i tipi definiti nel modello di dati astratti di diffusione contengono proprietà denominate AttributeExtensions e ElementExtensions (con un'unica eccezione, SyndicationContent ha una AttributeExtensions proprietà ma nessuna ElementExtensions proprietà). Queste proprietà sono raccolte di estensioni non elaborate rispettivamente dai TryParseAttribute metodi e TryParseElement . È possibile accedere a queste estensioni non elaborate chiamando SyndicationElementExtensionCollection.ReadElementExtensions sulla proprietà di ElementExtensions, SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson e SyndicationCategory. Questo set di metodi trova tutte le estensioni con il nome e lo spazio dei nomi specificati, le deserializza singolarmente in istanze di TExtension e le restituisce come raccolta di TExtension oggetti.
Derivazione di una nuova classe
È possibile derivare una nuova classe da una qualsiasi delle classi di modelli di dati astratte esistenti. Eseguire questa operazione quando si implementa un'applicazione in cui la maggior parte dei feed in uso ha una particolare estensione. In questo argomento, la maggior parte dei feed che il programma funziona con contiene un'estensione MyExtension . Per offrire un'esperienza di programmazione migliorata, seguire questa procedura:
Creare una classe per contenere i dati dell'estensione. In questo caso, creare una classe denominata MyExtension.
Derivare una classe denominata MyExtensionItem da SyndicationItem per esporre una proprietà di tipo MyExtension ai fini della programmabilità.
Sovrascrivere TryParseElement(XmlReader, String) nella classe MyExtensionItem per istanziare una nuova istanza di MyExtension quando un oggetto MyExtension viene letto.
Eseguire l'override WriteElementExtensions(XmlWriter, String) nella classe MyExtensionItem per scrivere il contenuto della proprietà MyExtension in un writer XML.
Derivare una classe denominata MyExtensionFeed da SyndicationFeed.
Eseguire l'override CreateItem() nella classe MyExtensionFeed per creare un'istanza di MyExtensionItem anziché quella predefinita SyndicationItem. Una serie di metodi sono definiti in SyndicationFeed e SyndicationItem che possono creare SyndicationLinkoggetti , SyndicationCategorye SyndicationPerson , ad esempio , CreateLink()CreateCategory()e CreatePerson(). Tutti i quali possono essere sottoposti a override per creare una classe derivata personalizzata.