WCF数据服务与WCF RIA服务的区别

3
我需要评估WCF Data Services和WCF RIA Services之间的SOA架构。以下是我的一些参数:
1.支持多个客户端(HTML5/iOS/Android/Windows 8 Metro/Windows Phone 7) 2.离线和脱机操作 3.验证引擎 4.性能 5.网络数据压缩 6.支持云环境
请问是否有人可以帮我收集一些评估数据。此外,是否还有其他适合SOA实现的好选择。
我知道有DevForce。
2个回答

5
我非常熟悉RIA服务,并知道它的不足之处。我对数据服务和DevForce了解甚少,但我知道DevForce在那些让我感到恼火的领域比RIA服务更好,这些领域包括:
  1. RIA无法执行任何分组或连接操作。(有趣的是,DevExpress工具包可以在某些情况下对RIA服务源进行分组。)
  2. 它确实理解关系,但不支持多对多关系,因为它必须透明地处理到桥接表的翻译。(编辑:这是Open Ria Services计划中的内容)
  3. 更改跟踪通过上下文(工作单元)工作,该上下文只能作为整体提交或拒绝(至少原装如此)。这通常会导致应用程序具有许多上下文和奇怪的复制操作来传输实体。RIAServicesContrib项目可以帮助解决这个问题。
  4. 它似乎已经不再维护了。我基于以下事实得出这个结论:当Entity Framework 4.1发布其新的DbContext API(用于代码优先)时,Microsoft发布了一个兼容性库,您可以使用RIA和EF代码优先。但是,该库在EF 4.1上有版本锁定,而Microsoft现在只是以Visual Studio 2012的奥威尔式注释的形式声明RIA Services不支持DbContext。(编辑:DbContext现在又被支持了 - EF目前支持版本5,6很可能只在Open Ria Services中得到支持)
  5. 有些任务,例如以编程方式观察相关实体的更改(而不是通过数据绑定),很难。
  6. 有些本应该非常简单的事情,例如从附加实体获取上下文,却很难。
  7. 所有查询都是单个请求,只剩下CUD(CRUD的一部分)批处理。
  8. 可以调用的自定义方法与普通CUD操作非常有限。特别地,无法取消已计划的方法而不取消整个上下文。这使它们在我想使用它们的大多数情况下几乎无用。
  9. 您将不得不决定是否使用DomainDataSource,它做了太多也做得太少。您也可以通过编程方式获取所有内容,但某些内容使用此xaml助手快速连接非常方便。
  10. 没有内置支持将实体序列化到隔离存储中。
  11. Silverlight(和我相信JavaScript)是唯一受支持的平台 - 没有WPF。(编辑:这是Open Ria Services的计划 - 特别是它应该能够为BreezeJS提供服务)

由于数据服务比较老(我想),所以我从来没有仔细看过它。但是最近我浏览了DevForce的功能列表,我认为那听起来很令人兴奋,尽管我无法根据经验对其发表任何评论。

(编辑:我在这里找到了一篇由Colin Blair撰写的关于RIA Services和WCF的非常有见地的比较here。)

架构师将他的产品与RIA Services进行比较here。我涵盖了他的一些观点,但不是全部。

总体而言,我可以说,RIA Services明显优于原始的WCF,但显然还有更好的东西。我希望那就是DevForce。


4

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

  • Silverlight消费
  • 穷人的服务 - 它们更容易启动和运行,而不需要太多的努力

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

也就是说,两种实现都相当不成熟(仅仅是我个人意见),没有经过很好的思考或实现。...您可能会更喜欢使用带有WebGet / WebInvoke属性的传统WCF操作...或使用WCF Web API

我不会选择DevForce,因为它主要是面向Silverlight实现(如果我记得正确的话)。 也就是说,他们的包非常酷,并且比RIA或WCF数据服务具有更完整的功能。


但是现在WCF RIA似乎支持多个客户端/平台,如此博客文章所述http://channel9.msdn.com/events/BUILD/BUILD2011/TOOL-800T。那么,您认为选择RIA是否是一个好选择,因为与WCF数据服务中的自定义实现相比,它提供了快速开发? - Ankush Gupta
OData通过REST天然支持多个客户端/平台...因此WCF数据服务和RIA都支持它。老实说,我发现WCF数据服务更容易使用和更灵活。你将托管哪种类型的服务/实体(NHibernate?Entity Framework?LINQ to SQL?) - Jeff
我正在考虑使用Entity Framework。在继续之前,我只想要100%的确定。您能否告诉我一些WCF RIA的限制/缺点? - Ankush Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接