2011-09-01 122 views
4

我们开始开发一个新的Silverlight LOB应用程序,其中DataAccess不会基于EF,而是我们自己的DAL代码(针对传统和其他不相关的原因)。RIA服务比。 WCF和共享代码

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

选项:

RIA服务,并生成代码: RIA服务将会自动地在我们的Silverlight项目创造我们的域模型的代理类和DomainServices。
这将意味着我们的服务将需要从的DomainService类继承,也需要大量的工作和解决方法,让我们的自定义模式,正常序列化(因为我们不使用EF)

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

所以问题是 - 鉴于我们不使用EF,那些对RIA服务的专家是什么,以及使用WCF和共享域的控制台是什么?

+1

我不能给你一个明确的答案,说实话这个问题有点主观,可以说明问题。我会告诉你这个你喜欢的或者离开的。使用WCF。优步“我们为你做所有内在的聪明”类似于RIA服务的框架就是让大规模投资者获得很少初始投资的回报(因为你没有使用EF,你的投资实际上会更大),但是可能会在以后付出沉重的代价沿着有时无法恢复的道路走下去。 WCF让你有更好的控制。 – AnthonyWJones

+0

这就是我的想法 - 在这里的许多项目中自动地缩写为automanually。 从MVP和其他关于RIA Services的传福音的指数级增加的文章和例子来看,恐怕未来的版本和工具将会更好地支持RIA Services并与之整合,而WCF将会落后。你的回答是否正确? – sternr

回答

3

我对这两种技术都有合理的现实生活体验。

主要优点和缺点在我看来:

RIA服务

  • 临:发展是(多)更快,即使不使用实体框架。您可以创建ViewModels,也可以使用AutoMapper将其映射,并指定验证/数据输入/关系所需的属性。即使使用实体框架,这也是很好的做法。
  • Con:A lot的开销。
  • 缺点:发送较大量的数据时的(像> 100名对象)

WCF和共享库性能劣化

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

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

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

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

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

+0

+1:我没有意识到大量数据的性能下降。很高兴知道。 –

+1

你能否澄清最后一点“不能使用数据绑定......”?怎么来的? – AnthonyWJones

+0

您是否有参考RIA性能下降的信息?因为RIA和WCF都是WCF,所以我很想知道是什么原因造成的。 –