RIA服务与WCF服务

时间:2009-10-29 23:46:44

标签: silverlight wcf wcf-ria-services

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

  

Silverlight&& Windows Mobile - > WCF    - >实体框架 - >数据库中。

移动应用应该可以像Silverlight应用那样做某些事情。使用RIA服务可以获得哪些好处?什么是RIA服务优于WCF的优势和劣势?

7 个答案:

答案 0 :(得分: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服务尚未发布,但可以下载预览。

答案 1 :(得分:3)

WCF RIA Services针对您在Silverlight中使用WCF时遇到的挑战引入了多种解决方案。例如,使用EntityQuery<T>异步加载查询比WCF提供的Begin..End解决方案容易得多。此外,RIA还提供来自客户端的集成更改跟踪,允许作为一个更改集提交或拒绝多个更改。 RIA会将所有这些更改捆绑到一个请求中,但是从您的域服务中,它的行为就像个人呼叫一样。作为很长一段时间的WCF开发人员,我可以告诉你,这是一件轻而易举的事。

答案 2 :(得分:1)

创建Ria服务只是为了与Silverlight一起使用。它们基本上是Silverlight准备使用的标准“软件包”。优点是你有很多服务而不需要编写代码,例如:

  1. 支持数据注释
  2. 支持会员提供商并登录
  3. 支持转移到silverlight服务器端生成的异常。 Silverlight存在一个难点,即通过FaultContract使异常的正常错误传输变得困难。关键是浏览器无法处理所有错误代码。 Ria服务通过一个技巧来解决这个问题
  4. Ria完成的所有工作都可以通过WCF和其他可用软件完成,特别是Wcf数据服务。例如,对于数据注释我发现this library比Ria服务做得更好,对成员资格的支持只需要激活WCF服务的现有成员资格端点,最后通过编写WCF行为可以轻松解决异常问题。代码可在此处获得:http://www.silverlightshow.net/Storage/10Tips.zip 重点是,通过Ria服务,您可以通过鼠标点击完成所有这些操作!另一方面,Ria Services真的很难定制......所以如果你不喜欢他们提供的标准解决方案,你根本就不能使用它们

答案 3 :(得分:0)

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

答案 4 :(得分:0)

无论答案如何:

  

RIA服务建立在WCF之上。   随着PDC的发布,这将是   更加明显。 RIA服务   简化了客户端编程   模型,以便它非常接近   与您的服务器端DomainService   和实体。

对我来说(我猜对于主题作者)除了访问DomainService(WCF提供的内容)之外,还不清楚RIA服务提供了什么?

感谢。

答案 5 :(得分:0)

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

此时,我需要回过头来再看一下普通的旧WCF工作。考虑到我们正在开发的应用程序的大小,这并不是那么简单,但在MS修复RIA服务的一些当前问题之前,它似乎是可行的解决方案。

答案 6 :(得分:-6)

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

您需要使用WCF RIA服务来构建涉及数据库的N层应用程序(或需要沿层传输的任何信息)。