Penso che non andrei mai più al POX. Se si scrive WCF in modo che il servizio stesso sia indipendente dall'associazione e il binding venga eseguito nei file di configurazione, WCF è praticamente indipendente dal trasporto e dal protocollo.Può eseguire SOAP, JSON, REST o una propria forma di serializzazione binaria. Tutto ciò è nel legame. Internamente, WCF specifica solo ciò che viene esposto in termini di contratti operativi e di dati (tutti definiti per classe, metodo e attributi di proprietà). WCF offre un'enorme flessibilità in questo senso, con ulteriori novità nel 2010.
Dal lato Silverlight, WCF richiede che si scriva un codice idraulico. .NET frameowrk dispone degli strumenti per creare il proxy nel progetto Silverlight, ma è necessario essere pronti a gestire tutte le risposte WCF in modo asincrono e il proxy non può rilevare le eccezioni generate dal servizio.
.NET RIA Services nasconde tutto questo. Usa WCF sotto le coperte, ma è completamente nascosto. Non è necessario scrivere codice asincrono. Si definisce la convalida una volta, per lo più in modo dichiarativo, e funziona sia sul lato server che sul lato client. La versione 1 verrà scelta come target per Silverlight, quindi non avrai la versatilità per utilizzare il servizio altrove. Tale ambito dovrebbe essere ampliato nelle versioni successive.
Non so abbastanza su ADO.NET Data Services da confrontare. Sospetto che la risposta dipenda dal fatto che tu voglia esporre i tuoi dati a qualcosa di più del semplice utilizzo di Silverlight.
Servizi RIA di .NET sembra la direzione che vorrei andare (osservando questi problemi io stesso, con una grande domanda in mente). I grandi problemi per me saranno l'implementazione di una vasta gamma di funzionalità nel livello di servizio, e non la possibilità di codificare direttamente al livello di accesso ai dati (dobbiamo essere in grado di eseguire su SQL Server o Oracle).
L'utilizzo di WPF invece di Silverlight cambia tutto, a seconda di dove risiedono i dati. È come la vecchia domanda di Winforms contro ASP.NET. Con WPF, stai creando un'app client Windows e non è necessario utilizzare alcuna forma di interfaccia dati basata sui servizi, a meno che l'accesso ai dati non ti costringa a farlo. Continuerete comunque a separare dati e attività dal codice di presentazione, utilizzando MVVM, MVC o MVP. Oltre a questo, hai la possibilità di trattare l'accesso ai dati come un livello, piuttosto che un wholy indipendente.
Esempi davvero utili! Grazie per questa eccellente risposta. –