Web系統的三層架構()
什麼是三層架構
所謂的三層開發就是將系統的整個業務應用劃分為表示層業務邏輯層數據訪問層這樣有利於系統的開發維護部署和擴展圖所示為三層架構示意圖
分層實現了高內聚低耦合采用分而治之的思想把問題劃分開來解決易於控制延展易於分配資源
圖 三層架構示意圖
表示層負責直接跟用戶進行交互一般是指系統的界面用於數據錄入數據顯示等意味著只做與外觀顯示相關的工作不屬於它的工作不用做
業務邏輯層用於做一些有效性驗證的工作以更好地保證程序運行的健壯性如完成數據添加修改和查詢業務不允許指定的文本框中輸入空字符串數據格式是否正確及數據類型驗證用戶權限的合法性判斷等通過以上的諸多判斷以決定是否將操作繼續向後傳遞盡量保證程序的正常運行
數據訪問層顧名思義就是用於專門跟數據庫進行交互執行數據的添加刪除修改和顯示等需要強調的是所有的數據對象只在這一層被引用如SystemDataSqlClient等除數據層之外的任何地方都不應該出現這樣的引用
ASPNET可以使用NET平台快速方便地部署三層架構ASPNET革命性的變化是在網頁中也使用基於事件的處理可以指定處理的後台代碼文件可以使用C#VBC++和J#作為後台代碼的語言NET中可以方便地實現組件的裝配後台代碼通過命名空間可以方便地使用自己定義的組件表示層放在ASPX頁面中數據庫操作和邏輯層用組件或封裝類來實現這樣就很方便地實現了三層架構
為什麼使用三層架構
對於一個簡單的應用程序來說在代碼量不是很多的情況下單層架構或二層架構開發完全夠用沒有必要將其復雜化如果將一個復雜的大型系統設計為單層架構或二層架構這樣的設計則會存在很嚴重的缺陷下面會具體介紹分層開發其實是為大型系統服務的
在開發過程中出現相似的功能時初級程序人員經常會復制代碼那麼同樣的代碼為什麼要寫那麼多次?這樣不但使程序變得冗長也不利於維護一個小小的修改或許會涉及很多頁面經常會導致異常的產生使程序不能正常運行最主要的是面向對象的思想沒有得到絲毫的體現打著面向對象的幌子卻依然走著面向過程的道路
針對這樣的問題初級程序人員應學會將程序中一些公用的處理程序寫成公共方法封裝在類中供其他程序調用例如寫一個數據操作類對數據操作進行合理封裝在數據庫操作過程中只要類中的相應方法(數據添加修改查詢等)可以完成特定的數據操作這就是數據訪問層不用每次操作數據庫時都寫那些重復性的數據庫操作代碼在新的應用開發中數據訪問層可以直接拿來用面向對象的三大特性之一的封裝性在這裡得到了很好的體現采用面向對象的方法可使代碼量較以前有很大的減少而且修改的時候也比較方便實現了代碼的重用性
下面舉兩個案例解釋一下為什麼要使用三層架構案例涉及的框架圖如圖所示
案例一
由於數據量的不斷增加數據庫由Access變成了SQL Server數據庫這樣一來原來的數據訪問層失效了數據操作對象發生了變化並且頁面中涉及數據對象的地方也要進行修改因為原來可能會使用OleDbDataReader對象將數據傳遞給顯示頁面現在都得換成SqlDataReader對象SQL Server和Access支持的數據類型也不一致在顯示數據時進行的數據轉換也要進行修改
案例二
由於特殊情況需要把Web形式的項目改造成Windows應用此時需要做多少修改呢?如果在Aspxcs中占據了大量代碼或者還有部分代碼存在於ASPX中那麼整個系統是否需要重新開發呢?
總之以上情況是設計不合理造成的在上面的案例中是否體會到了沒有分層開發模式的缺陷呢?是否曾碰到過這樣的情況呢?其實多層開發架構的出現很好地解決了這樣的問題通過程序架構進行合理的分層將極大地提高程序的通用性
使用三層架構開發的優點
從開發角度和應用角度來看三層架構比二層架構或單層架構有更大的優勢三層架構適合團隊開發每個人可以有不同的分工協同工作能使效率倍增開發二層或單層應用時每個開發人員都應對系統有較深的理解對人員能力要求很高而開發三層應用時則可以結合多方面的人才只需少數人對系統有全面的了解即可在一定程度上降低了開發的難度
三層架構可以更好地支持分布式計算環境邏輯層的應用程序可以在多個機器上運行充分利用網絡的計算功能分布式計算的潛力巨大遠比升級CPU有效美國人曾利用分布式計算進行解密幾個月就破解了據稱永遠都破解不了的密碼
三層架構的最大優點是它的安全性用戶只能通過邏輯層來訪問數據層減少了入口點把很多危險的系統功能都屏蔽了
返回目錄ASPNET開發寶典
編輯推薦
ASP NET開發培訓視頻教程
Microsoft NET框架程序設計視頻教程
ASPNET MVC 框架揭秘
Java Web開發詳解
From:http://tw.wingwit.com/Article/program/net/201311/16058.html