【问题标题】:RIA Services Vs. WCF and Shared CodeRIA 服务对比WCF 和共享代码
【发布时间】:2011-11-08 09:15:59
【问题描述】:

我们开始开发新的 Silverlight LOB 应用程序,其中 DataAccess 将不基于 EF,而是基于我们自己的 DAL 代码(出于遗留和其他不相关的原因)。

我们目前正在讨论是否使用 RIA 服务或简单的 WCF 服务作为 Silverlight 的外观层。

选项:

RIA 服务和生成的代码:RIA 服务将在我们的 Silverlight 项目中自动创建域模型和域服务的代理类。
这意味着我们的服务需要从 DomainService 类继承,并且需要大量的工作和变通方法才能让我们的自定义模型能够正常序列化(因为我们不使用 EF)

WCF 和共享库:我们将创建一个 DomainModel 库,它将在 Silverlight 和我们的服务器代码 (as offered here) 之间共享,让我们能够更好地控制我们的域类的外观,以及它们在 Silverlight 上的显示方式,并且我们的服务将保持干净,因为 WCF 不要求我们使用任何基类,并为我们提供了更多关于如何公开服务的权力。

所以问题是 - 鉴于我们不使用 EF,RIA 服务的优点是什么,使用 WCF 和共享域的缺点是什么?

【问题讨论】:

  • 我不能给你一个明确的答案,老实说这个问题有点主观,可能会引起争议。我会告诉你,你喜欢哪一个,你喜欢哪一个。使用 WCF。像 RIA 服务这样的优步“我们为你做所有内部聪明”的框架是那种只需很少的初始投资就能获得巨大回报的东西(你的投资实际上会更大,因为你没有使用 EF),但以后可能会产生高昂的成本沿着有时无法恢复的道路。 WCF 让您拥有更好的控制权。
  • 这正是我的想法——在这里的许多项目中,automagically 缩写为 automanually。从关于 MVP 和其他关于 RIA 服务的宣传者的文章和示例呈指数增长,我担心未来的版本和工具将有更好的支持和与 RIA 服务的集成,而 WCF 将被抛在后面。你的答案站得住脚吗?

标签: silverlight wcf entity-framework wcf-ria-services


【解决方案1】:

我对这两种技术都有合理的实际经验。

我认为的主要优点和缺点:

RIA 服务

  • Pro:开发速度(快得多),即使不使用实体框架也是如此。您可以创建 ViewModel,也许使用 AutoMapper 映射它们,并指定验证/数据输入/关系所需的属性。即使在使用实体框架时,这也是一种很好的做法。
  • 缺点:很多开销。
  • 缺点:发送大量数据(例如 > 100 个对象)时性能会下降

WCF 和共享库

  • Pro:性能比较优秀
  • 缺点:开发时间/可维护性不如 RIA 服务。
  • Con:没有 DomainDataSource 也无法使用数据绑定(即使使用 MVVM)。

更新 对于数据绑定部分:RIA 服务允许 Silverlight 中的 DomainDataSource 控件。这可以轻松(异步)加载其状态(忙碌等)的可绑定属性,这使得加载动画和用户体验的一般改进变得容易。这当然可以在没有此控件的情况下完成,但它会有所帮助。

对于 RIA 服务性能,我似乎找不到示例(这里有人说,由于无法满足响应时间,他们损失了几个月的开发时间,将域服务重写为传统 WCF 服务)。

关于 Silverlight(商业应用程序)的另一个注意事项:尝试将浏览器放大到 110% 或 90%,任意百分比。由于渲染的方式,字体/组件会变得模糊。我已经在多台机器/配置上确认了这一点,并且没有找到解决此问题的方法/解决方法。捕捉到设备像素在这里根本没有帮助。

另外,在您做出决定之前,最好也考虑一下 MVC3,将 JQuery 和 HTML5 作为您的解决方案的一个选项。 HTML 布局系统可能不如 Silverlight,但有跨平台和移动支持等优势。

【讨论】:

  • +1:我不知道大量数据的性能下降。很高兴知道。
  • 您能否澄清最后一点“也不能使用数据绑定...”?怎么会?
  • 您有关于 RIA 性能下降的信息的参考吗?我很想知道是什么原因造成的,因为 RIA 和 WCF 都是 WCF。
  • 感谢 Bas 的输入,但您能否详细说明 WCF 的绑定问题?关于字体问题,这是一个已知问题,据说已在 SL 5 中修复
  • WCF 中没有绑定问题,只是从 RIA 服务中获取数据更容易
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 2010-12-20
相关资源
最近更新 更多