發展RIA 商業應用程式最大的挑戰,不是動畫、不是視訊播放、更不是炫到翻的3D,而是傳統程式的基礎功能,Create, read, update and delete (CRUD),資料的增、查、改、刪等四項基礎功能,是的,你可能很難想像,Silverlight 炫目華麗的表象背後,對這些傳統開發技術能輕易實作的核心資料存取功能,甚至完全沒有標準、實際的作法,可以讓程式開發人員解決相關的問題,是的,沒有。
原文出處 : http://www.kangting.tw/2009/03/net-ria-services-silverlight-3_22.html
發展RIA 商業應用程式最大的挑戰,不是動畫、不是視訊播放、更不是炫到翻的3D,而是傳統程式的基礎功能,Create, read, update and delete (CRUD),資料的增、查、改、刪等四項基礎功能,是的,你可能很難想像,Silverlight 炫目華麗的表象背後,對這些傳統開發技術能輕易實作的核心資料存取功能,甚至完全沒有標準、實際的作法,可以讓程式開發人員解決相關的問題,是的,沒有。
微軟當然知道CRUD的需求問題,只是Silverlight一開始將所有的挑戰放在發展視覺化介面呈現的能力,實踐RIA必須具備的高度互動能力,也就是我們所熟悉的Flash設計功能,因為這是建立RIA最重要第一步,也是吸引目光的焦點,Silverlight 2之後,相關的基礎功能事實上幾乎已經完備,而接下來,微軟終於也沒有讓我們失望,.NET RIA Services在Silverlight 3被提出來了,這是Silverlight技術相當重要的里程碑,有了相關的服務,我們終於可以輕易的撰寫自訂的商業邏輯,讓Silverlight直接存取後端ASP.NET伺服器進行溝通,存取底層的資料來源或是資料服務,就如同傳統的雙層式架構一般,快速的開發RIA 商業應用程式。
一直到今天,很多程式設計師還是不清楚,ASP.NET其實只能在伺服器端運作,所有在瀏覽器看到的ASP.NET網頁,事實上在它從伺服器送出來之前,就已經建立完成了,換句話說,它是一個死的介面了,因此,完全沒有辦法與使用者作互動。 RIA改變了傳統ASP.NET系統的運作模型,取代網頁來呈現所需的視覺化介面,因此,使用者可以跟RIA應用程式進行互動,但是相對的,另外一個問題產生了,原來ASP.NET網頁與後端資料庫直接溝通的能力沒有辦法延伸至網路的另外一邊,在網路這一邊的Silverlight與後端資料庫的聯繫,便發生了極大的問題,換句話說,CRUD的每一個動作,從最簡單的資料存取,一直到複雜的資料讀寫邏輯運算,都很難被完成。
由於必須跨越網路,因此,RIA必須透過三層式架構,來處理後端資料來源的溝通聯繫作業,三層式架構本身就不容易實作,在ASP.NET,至少,辛苦一點,並沒有太大的問題,但是RIA必須跨越網路,一旦經過網路,事情就沒有這麼簡單了,你可以想像那種複雜度,因此在 Silverlight 3 之前,實作任何與資料處理有關的Silverlight商業應用程式,幾乎是開發人員的惡夢,因為我們必須透過各種不完整、傳統應用程式專用的技術,來湊出所需的Silverlight資料存取功能,當然,沒有什麼事情解決不了,不過,這一層技術的高牆橫在前面,我想,沒有理由,我們 要自己找麻煩去開發 RIA,或許Ajax還是一個比較好的解決方案,至少資料存取的直接問題還是丟給ASP.NET在處理。
.NET RIA Services為了解決上述的問題被發展出來,它對於Silverlight的重要性,幾乎就是ADO.NET之於ASP.NET,儘管這樣形容不盡貼切,但精神是一樣的,談到這裏,我們可能又要開始焦慮了,哇,又是一個新技術,有完沒完? 沒完是真的,可喜的是,有基礎的你並不需要太過擔心,就如同其它的服務,你只要新增此種類型態的服務,如上圖,一種稱為DomainService的類別檔案(實際上就是一個cs類別檔),透過我們已經具備的能力,包含C# 語法與LINQ資料存取技術建立其邏輯內容,就能直接與ASP.NET進行橋接…
換句話說,有了.NET RIA Services,我們就可以將心思放在處理真正所要解決的商業邏輯問題,這也讓Silverlight 3正式成為可以用來發展RIA 商業應用程式的RIA技術。