I’ve been having trouble finding a straight forward comparison of these two technologies. On the surface they appear to be solving similar, if not the same problems.
Make no mistake – the message coming from Microsoft is not clear or consistent – which probably explains the confusion. I suspect the relationship between these two products is still being “discovered” by MS.
Anyway, in this bliki I will try to sum up my findings as to the differences between them as I figure them out.
WCF (ADO.NET) Data Services |
WCF (.NET) RIA Services |
| Expose data model as RESTful web service | Prescriptive approach to n-tier app development |
| Cross platform interoperation as a goal - “Unlock data silos” - Out-of-box support from future MS products such as SQL2008 R2, Azure, Excel 2010, SharePoint 2010 |
Designed specifically for end-to-end Silverlight & ASP.NET solutions - Some technology proprietary to Silverlight (no WPF support) - Use ASP.NET Authentication/Roles across SL and ASP.NET - ASP.NET/AJAX can also access service layer |
| Loosely coupled clients and servers | Client & server are designed and deployed together |
| Service layer exposes “raw” data sources | Opportunity to easily add business logic into service layer - Encourage “domain” concepts - Strong validation framework - Offline / Sync enabled |
| Service can be consumed from .NET, Silverlight, AJAX, PHP and Java (libraries available) | Service can be consumed easily from SL, AJAX, WebForms |
| Service’s data source must: - Expose at least one IQueryable property - Implement IUpdateable if you desire updates |
Service exposes domain objects via convention: - IQueryable GetX - UpdateX/InsertX/DeleteX |
| No design time experience yet (??) | Design time experience with data sources, drag drop etc |
| - OData for all clients - Within OData, multiple formats supported (JSON, XML etc) |
- SOAP (binary) for SL clients - JSON for AJAX clients - SOAP (XML) for other clients |
| Discoverable (?) | Non-discoverable |
| Hosted as WCF Service (.svc) | Old version hosted in custom web handler (.axd). New version is WCF service. |
| Standardized on OData protocol | Will “support” OData |
| More mature – public for at least 2 years, formerly “Project Astoria” | Less mature – public for 6 months |
Common features
- Based on WCF
- Use a RESTful architecture
- Can be used to expose any data source (sql, xml, poco/objects etc.)
- Client side libraries provide ability to query using LINQ
General
- Currently they do not share much (any?) technology / code
- RIA Services is not based on top of Data Services
- RIA Services & Data Services will “align”
- OData eventually pushed down into WCF stack
Your opinions are welcome!
References
http://blogs.msdn.com/brada/archive/2009/03/19/what-is-net-ria-services.aspx
http://mschannel9.vo.msecnd.net/o9/mix/09/pptx/t36f.pptx
http://blogs.msdn.com/endpoint/archive/2009/11/18/the-wcf-services-ecosystem.aspx
http://www.douglaspurdy.com/2009/11/20/on-odata-open-data-protocol/
http://msdn.microsoft.com/en-us/data/ee844254.aspx
http://blogs.msdn.com/saurabh/archive/2009/11/23/understanding-the-wcf-in-wcf-ria-services.aspx
Great summary! This really helps in getting the big picture of where the two stacks fit. Thanks!
This indeed simple and clear to understand the differences btw two services.
Thanks for the side by side. Very nice, exactly what I was looking for.
WCF RIA services can easily expose SOAP,Odata or Json end points. So if you have lot of SL clients use the regular ria and other clients can use soap/odata or json …
Now isn’t it better to move to WCF RIA services rather than building WCF data services ?
Thank you. Good helpful summary.
Thanks for that good comparision.
Saved me a lot of time
Thank for your post! But there are some commercial products, that can be interesting in the fiels of WCF\RIA Services
http://www.ideablade.com/
http://datumnode.com
Good summary but, you did mention you recommendation about which service is good for silverlight development.
Thank You. It is clear and right to the point.
Great post. Does anyone know about which is best for (a) performance, (b) security, (c) ease of deployment? Thanks.
Thank you.Very nice, exactly what I was looking for.