什么是WCF RIA服务?

时间:2010-09-10 12:00:28

标签: c# .net wcf ria

我讨厌MSDN的WCF RIA服务网站。它没有说它是什么,它只说它做了什么。它说它可以实现什么但不说我为什么需要它。

例如:

  

“开发中的常见问题   n层RIA解决方案正在协调   中间的应用逻辑   层和表示层“。

嗯,这对我来说意义不大。

  

“RIA Services解决了这个问题   提供框架组件,工具,   和构成应用程序的服务   服务器上的逻辑可用   RIA客户端无需您   手动复制该编程   逻辑。您可以创建RIA客户端   知道业务规则和   知道客户端是自动的   更新了最新的中间层逻辑   每次解决方案都是   重新编译“。

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

那是什么?它只是RAD的VS 2010附加组件吗?或者它是WCF之上或其下的技术还是什么?它在哪里生活?有了数据,还有服务器,还有什么?

如果您能为我总结一下,我感激不尽。

2 个答案:

答案 0 :(得分:102)

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命名空间中的验证属性来装饰服务器端对象。同样,在构建项目时,现在会自动为相应的客户端对象生成验证代码。

我希望这个解释对你有所帮助。

答案 1 :(得分:8)

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

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

如果您想使用RIA服务,它们是开源的:

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