Dec 31, 2012

Ways of Data Access in Silverlight



Question: It is recommended to either use WCF, ADO.NET Data Services or the out of band .NET RIA services.
I know that ADO.NET data services are an abstraction that lies on top of WCF, but where do RIA services fit in? What do they solve that I don't have in WCF?
Question posted in MSDN (http://channel9.msdn.com/shows/The+knowledge+Chamber/Yavor-Georgiev-using-WCF-with-Silverlight-30)

 Answered by Yavor Georgiev (Program Manager at Microsoft):
You've nailed the big three ways to get data into your Silverlight app. Using WCF gives you access to the message exchange pattern and things like how the data is encoded (hence features like duplex and binary), so it's the most flexible and powerful way to do services. Also when you use WCF you are building loosely-coupled and standards based services that can be composed and used by many other clients, not just Silverlight (after all WCF services are standard SOAP 1.2 services).
ADO.NET Data Services is geared toward a scenario where you want to expose a database as a REST-style service. It is great for that scenario but you are constrained to the serialization formats and message patterns of REST.
.Net RIA Services is similarly scoped to an end-to-end data-driven solution: you expose a data and bind it to a rich Silverlight control in very few steps. The "service" and "client" are very tightly coupled but you get features such as validation, paging, conflict management, batching, offline support, etc. Again you get great value if you are implementing this kind of scenario, but you lose the flexibility WCF gives you.
So I think all three approaches have great use cases.