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
|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
|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|
- 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
- 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!