RIA服务与WCF和共享代码相比较?

4
我们开始开发一个新的Silverlight LOB应用程序,其中DataAccess将不基于EF,而是我们自己的DAL代码(由于遗留问题和其他无关原因)。
我们目前正在讨论是使用RIA Services还是简单的WCF Services作为Silverlight的门面层。
选项:
RIA服务和生成的代码:RIA服务将自动在我们的Silverlight项目中创建代理类,包括Domain Model和DomainServices。 这意味着我们的服务将需要继承自DomainService类,并且需要大量的工作和解决方案来允许我们的自定义模型正常序列化(因为我们不使用EF)。
WCF和共享库:我们将创建一个DomainModel库,该库将在Silverlight和我们的服务器代码之间共享(如此处所提供),从而使我们更加掌控我们的域类的外观以及它们在Silverlight上的呈现方式。我们的服务将保持干净,因为WCF不需要我们使用任何基类,并且可以更好地控制我们的服务如何公开。

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


1
我不能给你一个确定性的答案,说实话这个问题有点主观,可能会引起争论。我会告诉你,你可以接受或者不接受。使用WCF。像RIA服务这样的“我们为您处理所有内部智能”的框架可以在很小的初始投资下获得高额回报(因为您没有使用EF,所以您的投资实际上会更大),但是后期可能会产生巨大的成本,有时甚至难以弥补。WCF让您拥有更大的控制权。 - AnthonyWJones
这正是我的想法 - 在这里,许多项目中automagically被缩写为automanually。 从指数级增长的有关MVP和其他福音传道者关于RIA服务的文章和示例中,我担心未来版本和工具将更好地支持和集成RIA服务,而WCF将被抛在后面。你的答案是否仍然适用? - sternr
1个回答

3

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

在我的观点中,主要的优缺点如下:

RIA服务

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

WCF和共享库

  • 优点:性能相对优秀
  • 缺点:开发时间/可维护性不如RIA服务。
  • 缺点:即使使用MVVM,没有DomainDataSource也不能很好地使用数据绑定。

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

关于RIA服务性能的另一个注意事项,我似乎找不到例子(这里有人说他们因为无法满足响应时间而失去了几个月的开发时间,将域服务重写为常规WCF服务)。

关于Silverlight(商业应用程序)的一个额外说明:尝试将浏览器缩放到110%或90%,任意百分比。由于呈现方式的原因,字体/组件会变得模糊。我已经在多台机器/配置上确认过这一点,并且没有找到解决方法/解决方法。在这里,对设备像素进行捕捉根本没有帮助。

还有,在做出决策之前,考虑MVC3、JQuery和HTML5作为您解决方案的选择也是明智的选择。HTML布局系统可能不如Silverlight好,但是有跨平台和移动支持等优点。


+1:我之前不知道在处理大量数据时会有性能降低的问题。现在了解了,很好。 - iCollect.it Ltd
1
你能澄清一下最后一个点“也不能使用数据绑定…”吗?为什么? - AnthonyWJones
你有关于RIA性能退化的信息参考吗?我很想看看是什么导致了这种情况,因为RIA和WCF都属于WCF。 - Derek Beattie
1
谢谢你的回复,Bas。但是你能详细说明一下WCF的绑定问题吗? 关于字体问题,这是一个已知的问题,据说在SL 5中已经修复了。 - sternr
WCF 中没有绑定问题,只是从 RIA 服务获取数据更容易。 - Bas
只有一个其他的评论。我们因为某些限制,如不支持双工通信而放弃使用RIA服务。 - Myles J

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