|
在MIX 09上,Nikhil Kothari发布了微软的一神作——Microsoft .NET RIA Services。虽然目前的版本仅仅是可怜的"March '09 Preview”,但它已经足够让人兴奋不已。简单地说,在这之前,如果你用到了现在的RIA技术比如Silverlight,你只能选择写大量的服务或者WCF来实现数据的操作功能;而有了.NET RIA Services,你在RIA项目上操作数据,就像ASP.NET那样方便!
Nikhil Kothari在MIX09上介绍.NET RIA Services的视频:
http://www.nikhilk.NET/RIA-Services-MIX09.ASPx
Microsoft .NET RIA Services March '09 Preview及文档下载地址:
http://www.microsoft.com/downloads/details.ASPx?displaylang=en&FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce
MSDN Code Gallery中的.NET RIA Services Samples
http://code.msdn.microsoft.com/RiaServices
好了,以上是概要,下面让我们说得更详细些。
传统的RIA是怎样操作数据的
在去年这个时候,Silverlight 2Beta刚发布,有个朋友问我能不能使用Silverlight直接操作数据库。当时的答案当然是:很遗憾,不行。我们不得不使用大量的Web Services或者WCF来提供对数据库操作的每一个环节,Silverlight只能与数据层“间接接触”。
上图表明了整个过程。这样的数据操作虽然已经被大家习惯,但它是不合理的。就像是在实现“三通”以前,咱们去台湾只能先去香港转机。
博客园的大牛Shareach前几天写了一个Silverlight的聊天程序,数据操作使用的是WCF Duplex Service实现双向通讯,非常牛,大家可以去看看。(围观连接:http://www.cnblogs.com/yinpengxiang/archive/2009/03/23/slChat.html)这是Silverlight操作数据层的一个成功案例,但也会让人觉得悲哀:这样一个表面上很简单的聊天程序,为什么有了WCF的参与就变得很复杂?
这是因为,这样的“间接接触”,不仅不直观,还浪费了开发者大量的经理去考虑一些不该考虑的问题。开发者需要在客户端、Web Service端,BLL端各写一个不同版本的数据操作代码,并且还要考虑他们之间交互的安全性、网络情况等等,简直就是一个浪费大量ATP只产生微量GDP的过程。
合理的数据操作应该怎样的
上图展示了微软在RIA与数据库交互上的宏伟构想:无论是Silverlight,WPF,Javascript,还是ASP.NET,WCF,它们都应该使用无差别的数据逻辑,能够直接访问到数据层面,而不需要通过一层类似“代理”的数据服务。
Microsoft .NET RIA Services将如何实现“合理”
以上就是.NET RIA Services的实现原理。开发者在ASP.NET端的数据处理类(本图中是HRService)继承自一个叫做DomainService的类,在里面实现一些数据操作。.NET RIA Services就会自动生成相应的客户端类(本图中是HRContext)。而在我们开发客户端的时候,我们就可以直接调用.NET RIA Services生成的那个类,直接操作数据层面。
入门实例:
在了解.NET RIA Services想要完成的任务及其具体实现方法后,我们可以开始通过实例的方式来体验一下了。
- 开发环境:Visual Studio 2008 SP1 ,Silverlight 3 Beta SDK ,Silverlight Tools 3.0 , Microsoft .NET RIA Services March '09 Preview , SQL Server 2005
- 在VS2008中新建Silverlight项目
- 将Silverlight连接到ASP.NET Server project上
。
完成该步骤后的Solution Explorer如下图所示
- 在Web项目上单击右键,新建
- 选择SQL Server2005里的数据库和表。VS会帮我们生成一个ADO.NET的实体(Entity)。
生成的文件后缀名为.edmx,如本例中的 - 编译整个Solution。
- 再次在Web项目上右击,新增本文的主角——Domain Service Class 。"Domain Service Class”这名字挺熟的吧?嗯,上文介绍过了。
根据提示勾选需要的部分。在本例中,我们选择了Messages表作为实体,并选择”Enable editing”,这样在生成的类中会初始包括Get,Insert,Update,Delete 4个基本的实体操作方法
- 完成上面的操作后,会在Web项目下生成RdChat_DomainService.cs类。
CodeNET技术:Microsoft .NET RIA Services快速上手,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。