.NET RIA Services就像ASP.NET那样方便


  本文标签:.NET RIA Services ASP.NET

  在MIX 09上,Nikhil Kothari发布了微软的一神作——Microsoft .NET RIA Services  。虽然目前的版本仅仅是可怜的"March 09 Preview”,但它已经足够让人兴奋不已  。简单地说,在这之前,如果你用到了现在的RIA技术比如Silverlight,你只能选择写大量的服务或者WCF来实现数据的操作功能;而有了.NET RIA Services,你在RIA项目上操作数据,就像ASP.NET那样方便!
传统的RIA是怎样操作数据的

  在去年这个时候,Silverlight 2Beta刚发布,有个朋友问我能不能使用Silverlight直接操作数据库  。当时的答案当然是:很遗憾,不行  。我们不得不使用大量的Web Services或者WCF来提供对数据库操作的每一个环节,Silverlight只能与数据层“间接接触”  。

Silverlight间接接触

  
上图表明了整个过程  。这样的数据操作虽然已经被大家习惯,但它是不合理的  。就像是在实现“三通”以前,咱们去台湾只能先去香港转机  。

  这是因为,这样的“间接接触”,不仅不直观,还浪费了开发者大量的经理去考虑一些不该考虑的问题  。开发者需要在客户端、Web Service端,BLL端各写一个不同版本的数据操作代码,并且还要考虑他们之间交互的安全性、网络情况等等,简直就是一个浪费大量ATP只产生微量GDP的过程  。

  合理的数据操作应该怎样的

RIA与数据库交互

  
上图展示了微软在RIA与数据库交互上的宏伟构想:无论是Silverlight,WPF,Javascript,还是ASP.NET,WCF,它们都应该使用无差别的数据逻辑,能够直接访问到数据层面,而不需要通过一层类似“代理”的数据服务  。

  Microsoft .NET RIA Services将如何实现“合理”

.NET RIA Services的实现原理

  
以上就是.NET RIA Services的实现原理  。开发者在ASP.NET端的数据处理类(本图中是HRService)继承自一个叫做DomainService的类,在里面实现一些数据操作  。.NET RIA Services就会自动生成相应的客户端类(本图中是HRContext)  。而在我们开发客户端的时候,我们就可以直接调用.NET RIA Services生成的那个类,直接操作数据层面  。