在最新的 VS2010 SP1 中 WCF RIA Services 被正式加入, 对于WCF的初学者来说, 这两个概念经常搞混。 都是Services究竟有什么区别呢?来看看下表:
原文 http://jack.ukleja.com/wcf-data-services-vs-wcf-ria-services/
WCF Data Service | WCF RIA Service |
通过RESTful Web Service暴露的数据模型 | MS提供的一种n层应用开发方式 |
以跨平台访问作为目标 解除数据孤岛 被MS未来的产品所支持,比如:SQL2008,Azure, Excel 2010,SharePoint 2010 | 专为终端到终端的Silverlight和ASP.NET设计的解决方案 一些专有技术的Silverlight(不支持WPF) 使用ASP.NET角色/验证 ASP.NET/AJAX也可以访问服务层 |
松耦合的客户端和服务端 | 客户端和服务端设计部署在一起(不支持跨域) |
服务层暴露出“原始”数据源 | 可以轻松地添加业务逻辑 强调"域"的概念 强大的验证框架 支持脱机/同步 |
服务可以被不同的语言平台调用:Silverlight,AJAX,PHP和Java | 服务可以很容易被SL,AJAX所使用 |
服务的数据源必须: 至少暴露一个IQueryable的属性 按需实现IUpdateable | 服务端通过协议公开域对象: IQueryable GetX UpdateX/InsertX/DeleteX |
使用OData协议 基于OData协议的多种格式:JSON,XML等 | SL:SOAP(二进制) AJAX:JSON 其他客户端:SOAP(XML) |
服务可被发现(Discoverable) | 服务不可发现 |
寄宿于WCF服务(.svc) | 旧版本寄宿于WebApp中自定义的Web Handler(.axd), |
标准化的OData协议 | 将支持OData协议 |
PS:OData:开放数据协议(OData)是一个查询和更新数据的Web协议。OData应用了web技术如HTTP、Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务和存储的信息访问。
共同特点
- 基于WCF的
- 使用REST风格的架构
- 可用于公开任何数据源(SQL,XML和POCO(plain old CLR object)/对象等)
- 客户端库(代理)可采用LINQ查询
其他
- RIA Service 并不是基于 Data Service
- RIA Service 将向 Data Service 看齐
- OData 将成为 WCF 一个基础协议
参考
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