我正在重写一个LOB应用程序,其架构如下:
Silverlight&& Windows Mobile - > WCF - >实体框架 - >数据库中。
移动应用应该可以像Silverlight应用那样做某些事情。使用RIA服务可以获得哪些好处?什么是RIA服务优于WCF的优势和劣势?
答案 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准备使用的标准“软件包”。优点是你有很多服务而不需要编写代码,例如:
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层应用程序(或需要沿层传输的任何信息)。