WCF RIA服务是什么?

103

我讨厌MSDN关于WCF RIA服务的网站。它只说它能做什么,却没有说它是什么。它描述了它能够实现什么,但没有解释为什么我需要它。

例如:

"在开发一个n层RIA方案时,一个常见的问题是如何协调中间层和表示层之间的应用逻辑。"

这对我来说意义不大。

"RIA服务通过提供框架组件、工具和服务来解决这个问题,使得服务器上的应用逻辑可用于RIA客户端,而无需手动复制编程逻辑。您可以创建一个知晓业务规则的RIA客户端,并且知道每次重新编译解决方案时,客户端都会自动更新最新的中间层逻辑。"

那么它会从服务器下载DLL文件吗?它是否是描述数据规则的元数据?

那么它是什么呢?它只是用于RAD的VS 2010插件吗?还是一种基于WCF或者WCF下面的技术?它存在于哪里?在数据中,与服务器一起,还是其他地方?

如果您能为我总结一下就太感谢了。


3
这是建立在WCF之上的一种技术,采用代码生成和服务端、客户端双方的代码。它的主要重点是将数据从服务器传输到客户端并返回,同时包括验证等其他功能。 - Rangoric
1
@Rangoric:你可以把它发布为答案。简短的回答也可能是好的回答。 - H H
8
啊,哈哈,我把它误读为RIAA了,然后就有点疯狂了。 - Mateen Ulhaq
好知道:RIA = 富互联网应用程序(其中包括Silverlight的轻客户端),在这里有很好的解释[https://www.tutorialspoint.com/wcf/wcf_ria_services.htm]。WCF RIA服务是通过WCF实现的RIA服务,将轻客户端与服务器连接起来。 "WCF RIA服务从Microsoft结构化查询语言(SQL)服务器数据库检索数据,并使该数据可供Silverlight客户端使用,以进行编辑和查看"。 - mins
2个回答

110

RIA服务是一种在服务器端自动生成客户端(Silverlight)对象的技术,它会为您处理与服务器的通信并提供客户端验证。

RIA服务中的主要对象是DomainService,通常是连接到LinqToEntities模型的LinqToEntitiesDomainService

RIA服务中需要记住的关键点是它主要是一种高级构建技巧。当您创建一个域服务并编译解决方案时,将生成一个客户端表示形式的域服务。这个客户端表示形式具有相同的接口。假设您创建了一个名为CustomerService的服务器端域服务,其中包含一个方法IQueryable<Customer> GetCustomersByCountry。当您构建解决方案时,在您的Silverlight项目中生成一个名为CustomerContext的类,该类具有方法GetCustomersByCountryQuery。现在,您可以在客户端上使用此方法,就像在服务器上调用它一样。

更新、插入和删除采用不同的模式。当您创建一个域服务时,您可以指示是否要启用编辑。然后,在服务器端域服务中生成相应的更新/插入/删除方法。但是,客户端部分没有这些方法。在CustomerContext上拥有的方法叫做SubmitChanges。那么这是如何工作的:

  • 对于更新,您只需更新现有客户(通过GetCustomersByCountryQuery检索)的属性即可。
  • 对于插入,您可以使用CustomerContext.Customers.Add(new Customer(...) {...})
  • 对于删除,您可以使用CustomerContext.Customers.Remove(someCustomer)

完成编辑后,调用CustomerContext.SubmitChanges()即可。

关于验证,您可以使用来自System.ComponentModel.DataAnnotations 命名空间的验证属性来装饰服务器端对象。同样,在构建项目时,相应的客户端对象现在会自动生成验证代码。

希望这个解释能够对您有所帮助。


当然可以。感谢你分享。但愿你能更新MSDN网站。现在,如果我向我的领域对象添加一个属性,它会自动更新吗? - Aliostad
我在更新、插入和删除操作方面添加了一些附加信息。 - Ronald Wildenberg

8

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