【问题标题】:WCF Data Service vs WCF RIA ServiceWCF 数据服务与 WCF RIA 服务
【发布时间】:2012-01-14 08:13:31
【问题描述】:

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

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

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

我知道 DevForce。

【问题讨论】:

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


    【解决方案1】:

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

    1. RIA 不能进行分组或任何形式的连接。 (有趣的是,DevExpress 工具包可以 在某些情况下,对 RIA 服务源进行分组。)
    2. 它确实理解关系,但不是它必须理解的多对多类型 透明地处理到桥接表的转换。 (编辑:这是为 Open Ria Services 计划的)
    3. 更改跟踪通过一个上下文(工作单元)工作,该上下文只能提交或 被整体拒绝(无论如何都是开箱即用的)。这通常会导致应用程序 许多上下文和奇怪的复制操作来转移实体。 RIAServicesContrib 项目对此有所帮助。
    4. 似乎不再维护。我基于这样一个事实,即当 Entity Framework 4.1 发布他们的新 DbContext API(代码优先)时,Microsoft 发布了一个compatibility library,您可以使用它来使用RIA and EF code first。该库在 EF 4.1 上具有版本锁定,而微软现在只是以奥威尔式注释的形式向 Visual Studio 2012 声明RIA Services doesn't support DbContext。(编辑:现在再次支持 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 here 对 RIA 服务和 WCF 进行了非常有见地的比较。)

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • 但现在 WCF RIA 似乎支持多个客户端/平台,如本博文 channel9.msdn.com/events/BUILD/BUILD2011/TOOL-800T 中所述。那么,您认为使用 RIA 是否是一个不错的选择,因为与 WCF 数据服务中的自定义实现相比,它提供了快速的开发。
      • OData 通过 REST 固有地支持多个客户端/平台......因此 WCF 数据服务和 RIA 都支持它。老实说,我发现 WCF 数据服务更易于使用且更灵活。您将托管什么样的服务/实体(NHibernate?实体框架?LINQ to SQL?)
      • 我正在考虑实体框架。在继续之前,我只想 100% 确定。您能否向我介绍 WCF RIA 的一些限制/缺点?
      猜你喜欢
      • 2011-04-22
      • 2011-01-29
      • 1970-01-01
      • 2011-03-14
      • 2011-03-02
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多