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 servicePrescriptive 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 serversClient & server are designed and deployed together
Service layer exposes “raw” data sourcesOpportunity 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

[ad#Google Adsense #1]

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