Le RIA fanno largo uso di fonti dati. Queste applicazioni, però, non possono accedere direttamente a fonti dati lato server come per esempio un database, di conseguenza diventa necessario utilizzare il concetto di separazione fra lo strato di presentazione (frontend) e quello dati (beckend).
Il server espone questi dati tramite servizi di vario tipo, come SOAP o REST. Silverlight offre il markup XAML e il "code-behind" per lo strato di presentazione ed il subset della Base Class Library del .NET Framework per accedere ai servizi esposti dal server.
È molto importante ricordare che la comunicazione tra frontend e backend è sempre di tipo asincrono, evitando il blocco dell'interfaccia utente, nemico della user experience.
L'accesso al servizio di backend può avvenire in più modalità, tramite proxy, chiamate HTTP o via Soket. Qualunque sia la modalità utilizzata il metodo asincrono di comunicazione verso il servizio rimane concettualmente il solito, consiste nell'impostare un metodo (callback) come handler dell'evento di operazione terminata. Questo evento sarà scatenato alla ricezione di una risposta dal server.
Nel metodo di callback otteniamo, negli EventArgs
, una classe che ci fornirà il risultato della chiamata, nonché eventuali informazioni in caso di errore. I risultati possono essere resi in diversi formati come XML o JSON.
Grazie alla Base Class Library ed alle varie estensioni di LINQ siamo in grado di manipolare i dati in maniera dichiarativa e con una facilità estrema. Questo modello omogeneo di comunicazione verso i servizi verrà analizzato nel dettaglio con le successive lezioni, nelle quali ci addentreremo nei vari meccanismi di accesso a fonti dati remote con Silverlight.