|
在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類。
Code
NET技術:Microsoft .NET RIA Services快速上手,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。