什么是WCF RIA服务?

我讨厌MSDN的网站WCF RIA服务。 它并不是说它是什么,它只是说它做了什么。 它说明了它可以达到的目标,但并不是说我为什么需要它。

例如:

“开发n层RIA解决scheme时常见的问题是协调中间层和表示层之间的应用逻辑”。

那对我来说没有多大意义

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

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

那是什么? 这仅仅是一个VS 2010加载项的RAD? 或者它是WCF之上或下面的技术? 它在哪里生活? 随着数据,与服务器,是什么?

我很感激,如果你能为我总结这个请。

RIA服务是一种服务器端技术,可自动生成客户端(Silverlight)对象,以便为您处理与服务器的通信并提供客户端validation。

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

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

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

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

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

至于validation,你可以使用System.ComponentModel.DataAnnotations命名空间中的validation属性修饰你的服务器端对象。 同样,当你build立你的项目时,validation码现在自动生成相应的客户端对象。

我希望这个解释能帮助你一点。

最新消息:WCF RIA服务已经死亡:

http://blogs.msmvps.com/deborahk/who-moved-my-cheese-ria-services/

如果你想使用RIA服务,他们已经开源:

http://www.openriaservices.net/blog/posts/