RIA服务与WCF和共享代码

时间:2011-09-01 12:43:39

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

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

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

选项:

RIA服务和生成的代码:RIA Services将在Silverlight项目中自动创建Domain Model和DomainServices的代理类。
这意味着我们的服务需要从DomainService类继承,并且需要很多工作和变通方法来允许我们的自定义模型正常序列化(因为我们不使用EF)

WCF和共享库:我们将创建一个将在Silverlight和我们的服务器代码(as offered here)之间共享的DomainModel库,让我们更好地控制我们的域类如何看看,以及如何在Silverlight上看到它们,我们的服务将保持清洁,因为WCF不要求我们使用任何基类,并且让我们对我们的服务暴露方式给予更多的权力。

所以问题是 - 鉴于我们不使用EF,RIA服务的专业人员是什么,以及使用WCF和共享域的关键是什么?

1 个答案:

答案 0 :(得分:3)

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

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

RIA服务

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

WCF和共享库

  • 专业:性能相对优秀
  • Con:开发时间/可维护性不如RIA Services。
  • Con:没有DomainDataSource也不能使用数据绑定(即使使用MVVM)。

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

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

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

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