我讨厌MSDN的WCF RIA服务站点。它没有说它是什么,它只说它做了什么。它说明了它能实现什么,但没有说明我为什么需要它。
例如:
“在开发n层RIA解决方案时,一个常见的问题是协调中间层和表示层之间的应用逻辑”。
好吧,这对我来说没什么意义。
"RIA服务通过提供框架组件、工具和服务来解决这个问题,这些组件、工具和服务使服务器上的应用程序逻辑对RIA客户端可用,而不需要您手动复制该编程逻辑。您可以创建一个RIA客户端,它知道业务规则,并知道每次重新编译解决方案时,客户端都会自动更新为最新的中间层逻辑。“
那么它会从服务器上下载DLL吗?它是描述数据规则的元数据吗?
那么这是什么呢?它只是RAD的VS2010附加组件吗?或者它是一种在WCF之上或之下的技术,还是什么?它住在哪里?有数据吗?有服务器吗?
如果你能为我总结一下,我将不胜感激。
发布于 2010-09-10 20:47:24
RIA服务是一种服务器端技术,它自动生成客户端(Silverlight)对象,这些对象负责与服务器的通信,并提供客户端验证。
RIA服务中的主要对象是DomainService
,通常是连接到LinqToEntities模型的LinqToEntitiesDomainService
。
在RIA服务中要记住的关键一点是,它主要是一个复杂的构建技巧。创建域服务并编译解决方案时,将生成域服务的客户端表示形式。此客户端表示具有相同的接口。假设您使用IQueryable<Customer> GetCustomersByCountry
方法创建了一个服务器端域服务CustomerService
。当您构建解决方案时,会在您的Silverlight项目中生成一个具有GetCustomersByCountryQuery
方法的名为CustomerContext
的类。现在,您可以在客户端使用此方法,就像在服务器上调用它一样。
更新、插入和删除遵循不同的模式。创建域服务时,可以指示是否要启用编辑。然后,在服务器端域服务中生成相应的更新/插入/删除方法。但是,客户端部分没有这些方法。您的CustomerContext
上有一个名为SubmitChanges
的方法。那么这是如何工作的呢:
对于更新,您只需更新现有客户的属性(通过GetCustomersByCountryQuery
).
CustomerContext.Customers.Add(new Customer(...) {...})
.
CustomerContext.Customers.Remove(someCustomer)
.编辑完成后,调用CustomerContext.SubmitChanges()
。
至于验证,您可以使用System.ComponentModel.DataAnnotations
名称空间中的验证属性来修饰服务器端对象。同样,在构建项目时,现在会自动为相应的客户端对象生成验证代码。
我希望这个解释能帮助你更进一步。
发布于 2014-11-22 06:47:44
最新消息: WCF RIA服务已死:
http://blogs.msmvps.com/deborahk/who-moved-my-cheese-ria-services/
如果你想使用RIA服务,它们已经是开源的:
https://stackoverflow.com/questions/3684421
复制相似问题