在最新的 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层应用开发方式 |
以跨平台访问作为目标
| 专为终端到终端的Silverlight和ASP.NET设计的解决方案
|
松耦合的客户端和服务端 | 客户端和服务端设计部署在一起(不支持跨域) |
服务层暴露出“原始”数据源 | 可以轻松地添加业务逻辑
|
服务可以被不同的语言平台调用:Silverlight,AJAX,PHP和Java | 服务可以很容易被SL,AJAX所使用 |
服务的数据源必须:
| 服务端通过协议公开域对象:
|
|
|
服务可被发现(Discoverable) | 服务不可发现 |
寄宿于WCF服务(.svc) | 旧版本寄宿于WebApp中自定义的Web Handler(.axd), 新版本独立为WCF Service |
标准化的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