什么是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服务,他们已经开源: