Silverlight RIA服务与WCF服务

Silverlight RIA服务与WCF服务,silverlight,wcf,wcf-ria-services,Silverlight,Wcf,Wcf Ria Services,我正在重写一个LOB应用程序,其体系结构如下: Silverlight和Windows Mobile->WCF ->实体框架->数据库 移动应用程序应该能够像silverlight应用程序那样做某些事情。在这里使用RIA服务有什么好处?RIA服务与WCF相比有哪些优点和缺点?.NET RIA服务是为在浏览器中运行的Silverlight创建的。Silverlight正在运行.NET framework的特殊版本,在N层应用程序中,Silverlight无法和服务器端共享程序集。NET RIA服务

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

Silverlight和Windows Mobile->WCF ->实体框架->数据库


移动应用程序应该能够像silverlight应用程序那样做某些事情。在这里使用RIA服务有什么好处?RIA服务与WCF相比有哪些优点和缺点?

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

您可能能够从Windows Mobile调用.NET RIA服务,但我认为这并不容易,而且目前您可能实际上必须对在线发送的内容进行反向工程(使用JSON)。另一方面,WCF的范围更广,但不支持Silverlight开发,其支持方式与.NETRIA服务不同

如果您正在编写Silverlight,那么只有N层应用程序。NETRIA服务非常强大。然而,如果Silverlight只是几个客户端中的一个,那么WCF可能是一个更好的选择


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

RIA服务构建在WCF之上。随着PDC的释放,这将更加明显。RIA Services简化了客户端编程模型,使其与服务器端域服务和实体非常紧密地匹配。

不管答案如何:


RIA服务构建在WCF之上。 随着PDC释放,这将是 更明显的是。RIA服务 简化客户端编程 模型,使其非常匹配 使用您的服务器端域服务 和实体

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


谢谢。

.NET RIA服务在2009年11月举行的PDC中被命名为WCF RIA服务。由于它是建立在WCF之上的,因此被命名为“WCF RIA服务”


您需要使用WCF RIA服务来构建涉及数据库(或需要在各层中携带的任何信息)的N层应用程序。

WCF RIA服务为您在使用Silverlight的WCF时遇到的难题提供了多种解决方案。例如,使用
EntityQuery
异步加载查询要比WCF提供的Begin..End解决方案简单得多。此外,RIA还提供了来自客户端的集成更改跟踪,允许将多个更改作为一个更改集提交或拒绝。RIA将把所有这些更改捆绑到一个请求中,但从您的域服务中,它的行为与单独的调用一样。作为一个长期的WCF开发者,我可以告诉你,这是一件轻而易举的事

在WCF RIA服务正式发布之前,我认为这个问题没有明确的答案。截至目前的测试版(VS2008,SL3),RIA服务并没有隐藏服务调用的异步性质;您仍然需要提供回调方法。此外,RIA服务目前不支持用户定义类(或用户定义类的集合)作为RIA服务调用的参数或返回值。我还遇到了通过RIA服务提供不可编辑实体类的问题。(错误表明实体集合不可编辑。是的,这正是我想要的…)


在这一点上,我需要退后一步,再看看如何使普通的旧WCF工作起来。考虑到我们正在开发的应用程序的大小,这并不是那么简单,但在微软解决RIA服务当前的一些问题之前,这似乎是可行的解决方案。

RIA服务的创建只是为了与Silverlight一起使用。它们实质上是Silverlight可以使用的标准“包”。优点是您有很多服务,无需编写代码,即:

  • 支持数据注释
  • 支持成员资格提供程序和登录
  • 支持传输到silverlight服务器端生成的异常。silverlight中存在一个困难,使得通过FaultContract进行异常的正常错误传输变得困难。问题是浏览器无法处理所有错误代码。Ria服务通过一个技巧解决了这个问题
  • Ria完成的所有事情都可以通过WCF和其他可用软件完成,特别是通过WCF数据服务。例如,对于数据注释,我发现它比Ria服务做得更好,对成员身份的支持只需要激活WCF服务已经存在的成员身份端点,最后,通过编写WCF行为可以轻松解决异常问题。代码可在以下位置获得:http://www.silverlightshow.net/Storage/10Tips.zip
    关键是,使用Ria服务,您只需单击鼠标即可实现所有这些!。另一方面,Ria服务真的很难定制……因此,如果您不喜欢他们提供的标准解决方案,您就无法使用它们

    像这样的体系结构能正常工作吗?1) silverlight->RIA Services->WCF->Entity Framework 2)移动应用->WCF->Entity Framework具有编辑权限的人是否可以更改此答案以反映RIA的当前状态(现在可用)。我知道这个问题很挑剔,但StackOverflow最好的地方是能够阅读仍然相关的旧答案:)您不需要使用WCF RIA服务来构建N层应用程序。普通的旧WCF工作,还有WCF数据服务选项。在两者之间进行选择有点困难。第二个是RIA