3

我需要评估WCF Data ServicesWCF RIA Services之间的 SOA 架构。以下是我的一些参数:

  1. 多客户端(HTML5/iOS/Android/Windows 8 Metro/Windows Phone 7)
  2. 断开和离线操作
  3. 验证引擎
  4. 表现
  5. 网络数据压缩
  6. 支持云环境

谁能帮我收集一些数据进行评估。此外,对于 SOA 实施是否还有其他好的选择。

我知道 DevForce。

4

2 回答 2

5

我对 RIA 服务非常熟悉,并且知道它的不足之处。我对数据服务和 DevForce 知之甚少,但我知道 DevForces 在那些让我烦恼的领域宣传得比 RIA 服务更好,那就是:

  1. RIA 不能进行分组或任何形式的连接。(有趣的是,在某些情况下,DevExpress 工具包可以对 RIA 服务源进行分组。)
  2. 它确实理解关系,但不是多对多类型的,它必须透明地处理到桥接表的转换。(编辑:这是为 Open Ria 服务计划的)
  3. 更改跟踪通过一个上下文(工作单元)工作,该上下文只能作为一个整体提交或拒绝(无论如何都是开箱即用的)。这通常会导致应用程序具有许多上下文和奇怪的复制操作来传输实体。RIAServicesContrib项目对此有所 帮助。
  4. 它似乎不再维护。我基于这样一个事实,即当 Entity Framework 4.1 发布他们的新 DbContext API(代码优先)时,Microsoft 发布了一个兼容性库,您可以使用它首先使用RIA 和 EF 代码。该库在 EF 4.1 上具有版本锁定,微软现在只是声明RIA 服务不支持 DbContext以对 Visual Studio 2012 的 Orwellian 注释的形式。(编辑:现在再次支持 DbContext - 目前支持 EF到版本 5,其中 6 可能仅在 Open Ria 服务中支持)
  5. 某些任务,例如以编程方式(而不是通过数据绑定)观察相关实体的变化是很困难的。
  6. 一些应该非常简单的事情,例如从附加实体中获取上下文,却很难。
  7. 所有查询都是单个请求,只有剩余的 CUD(CRUD 的)被批处理。
  8. 与正常 CUD 操作一起调用的自定义方法非常有限。特别是,如果不取消整个上下文,就不可能取消已安排的任务。在我想使用它们的大多数情况下,这使得它们几乎毫无用处。
  9. 您将不得不决定是否使用 DomainDataSource,这是一个做得太多也太少的野兽。您也可以通过编程方式获取所有内容,但有些东西可以很快地与这个 xaml 助手连接起来。
  10. 没有内置支持将实体序列化为独立存储。
  11. Silverlight(我相信还有 Javascript)是唯一受支持的平台——没有 WPF。(编辑:这是为 Open Ria Services 计划的 - 特别是,它应该能够为 BreezeJS 提供服务)

由于 Data Services 较旧(我认为),因此我并不关心仔细查看它。然而,我最近浏览了 DevForce 的功能列表,我相信这听起来很令人兴奋,尽管我不能从经验中说任何话。

(编辑:我在这里找到了 Colin Blair 对 RIA 服务和 WCF 的一个非常有见地的比较。)

架构师在这里将他的产品与 RIA 服务进行比较。我谈到了他的一些观点,但不是全部。

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

于 2012-11-21T16:13:45.273 回答
4

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

  • Silverlight 消费
  • 穷人的服务——他们更容易启动和运行,不费吹灰之力

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

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

我不会只使用 DevForce,因为它主要针对 Silverlight 实现(如果我没记错的话)。也就是说,它们的包非常酷,并且比 RIA 或 WCF 数据服务更完整。

于 2011-12-06T18:36:30.950 回答