关于c#:什么是WCF RIA服务?

What is WCF RIA services?

我讨厌msdn的wcf ria服务网站。它不说它是什么,只说它做了什么。它说它能实现什么,但不说我为什么需要它。

例如:

"A common problem when developing an
n-tier RIA solution is coordinating
application logic between the middle
tier and the presentation tier".

嗯,对我来说没什么意义。

"RIA Services solves this problem by
providing framework components, tools,
and services that make the application
logic on the server available to the
RIA client without requiring you to
manually duplicate that programming
logic. You can create a RIA client
that is aware of business rules and
know that the client is automatically
updated with latest middle tier logic
every time that the solution is
re-compiled."

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

那是什么?它只是RAD的一个vs 2010附加组件吗?或者它是WCF之上或之下的技术,还是什么?它住在哪里?有数据,有服务器,什么?

如果你能为我总结一下,我很感激。


RIA服务是一种服务器端技术,它自动生成客户端(Silverlight)对象,这些对象负责与服务器的通信并提供客户端验证。

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

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

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

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

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

至于验证,您可以使用来自System.ComponentModel.DataAnnotations名称空间的验证属性来修饰服务器端对象。同样,当您构建项目时,现在会自动为相应的客户端对象生成验证代码。

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


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

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

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

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