RIA服务与WCF服务

15

我正在重写一个LOB应用程序,其架构如下:

Silverlight和Windows Mobile -> WCF -> Entity Framework -> 数据库。

移动应用程序应该能够像Silverlight应用程序一样完成某些任务。在这里使用RIA服务会带来什么好处?相对于WCF,RIA服务的优缺点是什么?

7个回答

13

.NET RIA Services是为运行在浏览器中的Silverlight创建的。Silverlight运行了一个特殊版本的.NET框架,在N层应用程序中,Silverlight无法与服务器共享程序集。通过采用一些聪明的代码生成,.NET RIA Services使开发人员几乎看不到这个差距。类似于领域类的类在客户端上进行代码生成,并提供了在客户端和服务器之间移动对象的方式。

您可能能够从Windows Mobile调用.NET RIA服务,但我认为这不会很容易,目前您甚至可能需要反向工程发送的内容(使用JSON)。另一方面,WCF具有更广泛的范围,但不支持像.NET RIA Services一样的Silverlight开发。

如果您正在编写仅适用于Silverlight的N层应用程序,则.NET RIA Services非常强大。但是,如果Silverlight只是几个客户端中的一个,则WCF可能是更好的选择。

请注意,.NET RIA Services尚未发布,但可以下载预览版。


像这样的架构是否能够很好地运作?1)Silverlight -> RIA服务 -> WCF -> 实体框架 2)移动应用程序 -> WCF -> 实体框架 - Shawn Mclean
1
有编辑权限的人能否修改此答案以反映RIA的当前状态(现在已经可用)。我知道这是一个挑剔的问题,但 StackOverflow 最好的地方就是能够阅读仍然相关的旧答案 :) - Martin Doms

3

WCF RIA服务介绍了几种解决方案,以解决使用Silverlight时遇到的一些挑战。例如,使用EntityQuery<T>异步加载查询比WCF提供的Begin..End解决方案要容易得多。此外,RIA提供了从客户端集成更改跟踪的功能,允许将多个更改提交或拒绝为一个更改集。RIA将所有这些更改捆绑到一个请求中,但从您的域服务中,它的行为就像是单独的调用。作为长期的WCF开发人员,我可以告诉您,这是非常轻松的。


1

Ria服务是专门为Silverlight创建的。它们实质上是一个标准的“包”,可以直接被Silverlight使用。优点在于您无需编写代码即可获得许多服务,例如:

  1. 支持数据注释
  2. 支持成员资格提供程序和登录
  3. 支持将生成的异常传输到Silverlight服务器端。在Silverlight中存在一个困难,使得通过FaultContract传输异常的常规错误传输变得困难。问题在于浏览器无法处理所有错误代码。Ria服务通过一种技巧解决了这个问题。

使用WCF和其他可用软件,特别是Wcf数据服务,可以完成Ria所做的所有事情。例如,对于数据注释,我发现this library比Ria服务更好,支持成员身份验证只需要激活WCF服务的已有成员身份验证端点,最后异常问题可以通过编写WCF行为轻松解决。代码在此处可用:http://www.silverlightshow.net/Storage/10Tips.zip 重点是使用Ria Service只需单击鼠标即可完成所有操作!另一方面,Ria Services真的很难自定义...因此,如果您不喜欢他们提供的标准解决方案,就无法使用它们。


您可以将RIA服务用作普通的WCF服务,也可以用作OData和JSON端点。 - SteveC

0

不考虑答案:

RIA Services 建立在 WCF 之上。 随着 PDC 版本的发布,这将变得更加明显。 RIA 服务简化了客户端编程模型,使其与服务器端 DomainService 和实体非常接近。

对于我来说(我猜对于主题作者也是如此),除了访问 DomainService(与 WCF 提供的相同)外,RIA 服务还提供了什么并不清楚?

谢谢。


0

在WCF RIA Services正式发布之前,我认为这个问题没有确定的答案。截至目前的Beta版(针对VS 2008、SL 3),RIA Services不会隐藏服务调用的异步性质;您仍然需要提供回调方法。此外,RIA Services当前不支持用户定义的类(或用户定义的类集合)作为RIA服务调用的参数或返回值。我还遇到了通过RIA Services提供非可编辑实体类的问题。(错误说实体集合不可编辑。是的,这正是我想要的....)

此时,我需要回退并重新考虑使用普通的WCF。考虑到我们正在开发的应用程序的规模,这并不那么简单,但在微软修复一些RIA Services当前存在的问题之前,这似乎是可行的解决方案。


0

RIA Services是建立在WCF之上的。随着PDC发布,这将变得更加明显。RIA Services简化了客户端编程模型,使其与服务器端的DomainService和实体非常相似。


-6

在2009年11月的PDC上,.NET RIA Services被命名为WCF RIA Services。由于它是建立在WCF之上的,因此被称为WCF RIA Services

如果要构建涉及数据库(或需要沿着层传递任何信息)的N层应用程序,则需要使用WCF RIA Services。


2
构建N层应用程序时,您不需要使用WCF RIA服务。普通的WCF也可以工作,并且还有WCF数据服务的选项。在它们之间进行选择有些困难。 - Cylon Cat
1
赞同 - RIA是使用Silverlight构建N层应用程序的一种方式。 - jlo

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