什么是WCF RIA服务?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

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

例如:

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

那对我来说没有多大意义。

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

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

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

提问于
用户回答回答于

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

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

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

我希望这个解释能够帮助你更进一步。

扫码关注云+社区