[ASP.NET] 淺談SqlDataSource及Data access Layer

在ASP.NET的世界, 如果介面上的物件要連結到資料庫,大部分的參考書會教你使用SqlDataSource物件進行連結。看起來這個方法非常的不錯,既快速方便又簡單,是實上也是如此。不過......(雷聲) 當你開發的系統越變越複雜的時候,問題就出現了。一個畫面可能會出現幾個到十幾個SqlDataSource物件,而且使用者版面與版面之間由於無法共用SqlDataSource;然後你慢慢會發現越來越多重覆又重覆又重覆的SqlDataSource出現在不同的版面上,使得系統越來越笨重你也越來越笨;而且自己辛辛苦苦寫好的Sql statement團隊中的其他人卻不能享用你的成果,也沒有一個集中的圖形化介面控制所有存取資料庫的Sql statement. 到最後你更會發現程式碼根本無法維護然後也開始發求職信。

由於以上的缺點,因此就出現了Data Access Layer(DAL)這樣東西。嚴格來說它是一種概念,並不是ASP.NET提供的新功能。根據Microsoft的說法:"DAL for short, and is typically implemented as a separate Class Library project. "。就是要解決上面SqlDataSource帶來的各種問題。當你使用Data Access Layer這個概念來存取資料庫的時候,系統不是像Sqldatasource一樣直接存取資料庫,而是使用其中的DataSet,再由DataSet對資料庫進行存取。

老實說這不是有點多餘?那就要看你系統的複雜性。畢竟在資訊產業,系統維護佔了一筆非常大的開支,而且大家心知肚明,對於實在爛透的程式碼,錢有些時候的確未必能夠解決所有問題。所以我是建議如果知道未來系統會變很大,最初的時候多花那一點點時間用DataSet建立Business Layer吧......XD

下篇文章會談一下如何實作。

參考資料
[1] Tutorial 1: Creating a Data Access Layer http://msdn.microsoft.com/en-us/library/aa581778.aspx
----



Popular posts from this blog

[SQL SERVER] 找出LOCK方法懶人包

[SQL Server] 解決log檔(ldf file)過度膨脹的實戰經驗

[Windows7] 跨距磁碟區, 等量磁碟區, 鏡像磁碟區之區別