WCF数据服务与WCF RIA服务

时间:2011-12-06 18:20:56

标签: wcf wcf-data-services wcf-ria-services soa devforce

我需要评估 WCF数据服务 WCF RIA服务之间的SOA架构。以下是我的一些参数:

  1. 多个客户端(HTML5 / iOS / Android / Windows 8 Metro / Windows Phone 7)
  2. 断开连接和离线操作
  3. 验证引擎
  4. 性能
  5. 网络数据压缩
  6. 支持云环境
  7. 有人可以帮我收集一些数据供我评估。此外,SOA实现是否还有其他好的选择。

    我知道DevForce。

2 个答案:

答案 0 :(得分:5)

我非常熟悉RIA服务,并知道它不足之处。我对数据服务和DevForce知之甚少,但我知道DevForces在RIA服务上的广告正好在那些让我烦恼的地方,这是:

  1. RIA不能分组或加入任何形式。 (有趣的是,DevExpress工具包可以 在某些情况下,可以在RIA服务来源上进行分组。)
  2. 它确实理解人际关系,但不了解它所必需的多对多关系 透明地处理桥表的转换。 (编辑:这是计划用于Open Ria服务)
  3. 更改跟踪通过只能提交的上下文(工作单元)或工作 作为一个整体被拒绝(无论如何都是开箱即用的)。这通常导致应用程序 转移实体的许多上下文和奇怪的复制操作。 RIAServicesContrib compatibility library 项目有助于此。
  4. 似乎不再维护。我的基础是,当Entity Framework 4.1发布新的DbContext API(首先是代码)时,Microsoft发布了RIA and EF code first,您可以使用RIA Services doesn't support DbContext。该库在EF 4.1上有版本锁定,而微软现在只是以Visual Studio 2012的奥威尔笔记的形式表示here。(编辑:现在再次支持DbContext - 目前支持EF版本5,只有6可能只在Open Ria Services中支持)
  5. 一些任务,例如以编程方式观察相关实体的变化(而不是 通过数据绑定很难。
  6. 一些应该非常简单的事情,例如从附加中获取上下文 实体,很难。
  7. 所有查询都是单个请求,只有剩余的CUD(CRUD)被批量处理。
  8. 与正常CUD操作一起调用的自定义方法非常有限。在 特别是,它不是 可以在不取消整个上下文的情况下取消已安排的一个。有 在我想使用它们的大多数情况下,它们几乎没用。
  9. 您必须决定是否使用DomainDataSource,这是一个野兽 那太多太少了。您也可以以编程方式获取所有内容,但是 有些东西很快就能与这个xaml助手联系起来。
  10. 没有内置支持将实体序列化为隔离存储。
  11. Silverlight(和我相信的Javascript)是唯一受支持的平台 - 没有WPF。  (编辑:这是计划用于Open Ria服务 - 特别是它应该可以服务于BreezeJS)
  12. 由于数据服务年龄较大(我认为),我不在乎仔细研究它。不过我最近浏览了DevForce的功能列表,我觉得这听起来令人兴奋,虽然我不能从经验中说出任何相关内容。

    (编辑:我发现了Colin Blair {3}对RIA服务和WCF的非常有见识的比较。)

    建筑师将他的产品与RIA服务here进行比较。我介绍了他的一些观点,但不是全部。

    总而言之,我可以说RIA服务明显优于原始WCF,但同样明显的是必须有更好的东西。我希望那是DevForce。

答案 1 :(得分:4)

两者都通过OData公开实体,但RIA服务专门针对:

  • Silverlight消费
  • 穷人的服务 - 他们更容易轻松起床和跑步

WCF数据服务功能强大且可配置。最大的区别(IMO)是RIA服务每个实体需要一个主机类型,而WCF数据服务可以自动托管整个内容(具有多个IQueryable属性的类型)。

也就是说,两种实现方式都相当一半(仅限IMO)并且没有经过深思熟虑或实施。 ...使用WebGet / WebInvoke属性托管的传统WCF操作......或使用WCF Web API,您可能会更好。

我不会选择DevForce,因为它主要针对Silverlight实现(如果我没记错的话)。也就是说,它们的封装非常酷,比RIA或WCF数据服务功能更加完善。