韋麗霜
摘要:三層體系結(jié)構(gòu)中用戶不會直接訪問數(shù)據(jù)服務(wù)器,而是透過三層體系將數(shù)據(jù)訪問、業(yè)務(wù)規(guī)劃、合法性校驗等一系列工作交由中間層代為完成,最終由中間層實現(xiàn)與數(shù)據(jù)庫的對接,從而完成信息交互。該文從三層結(jié)構(gòu)入手,重點論述了使用ASP.NET部署三層架構(gòu)以及實現(xiàn)方式。
關(guān)鍵詞:Asp.Net;特性;三層結(jié)構(gòu)
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2012)36-8609-03
隨著Internet的廣為普及,Web開發(fā)技術(shù)得到迅速發(fā)展,軟件行業(yè)對Web應(yīng)用程序的需求也越來越多。目前,ASP.NET技術(shù)是Web應(yīng)用開發(fā)的主流技術(shù)之一。而基于ASP.NET進行Web項目開發(fā)需要綜合應(yīng)用.NET框架、程序設(shè)計語言、數(shù)據(jù)庫技術(shù)和軟件工程領(lǐng)域的知識的技能,如何使Web應(yīng)用程序開發(fā)變得高效、可閱讀性、可調(diào)試性、可維護性及低耦合度,是軟件行業(yè)需要考慮的問題。
1三層結(jié)構(gòu)簡介
分層結(jié)構(gòu)是軟件體系架構(gòu)設(shè)計中最常見且最重要的一種結(jié)構(gòu)。分層,就是將應(yīng)用程序按邏輯功能劃分成不同的模塊加以實現(xiàn)。微軟推薦的分層式結(jié)構(gòu)一般分為三層:數(shù)據(jù)訪問層(DataAccessLayer,DAL)、業(yè)務(wù)邏輯層(BusinessLogicLayer,BLL)和表示層即用戶界面(UserInterface,UI)。表示層實現(xiàn)內(nèi)容的展現(xiàn)和用戶的交互;業(yè)務(wù)邏輯層實現(xiàn)業(yè)務(wù)邏輯和驗證規(guī)則;數(shù)據(jù)訪問層,它可以連接數(shù)據(jù)庫、調(diào)用存儲過程或執(zhí)行SQL語句,實現(xiàn)對數(shù)據(jù)表的增、刪、改、查操作。創(chuàng)建DAL的緣由之一就是可以輕松地對應(yīng)用程序的數(shù)據(jù)庫平臺進行移植,而不影響應(yīng)用程序的其他部分。另一個緣由就是因為應(yīng)用程序需要支持多種數(shù)據(jù)庫平臺,如既要支持SQLServer又要支持Oracle。區(qū)分層次的目的是為了體現(xiàn)“高內(nèi)聚,低耦合”的思想。分層需要一個適當(dāng)?shù)臄?shù)據(jù)容器來貫穿各層,以防耦合性過高,因此用模型層作為各層之間的數(shù)據(jù)傳遞的載體。模型層包含了將數(shù)據(jù)庫中的表轉(zhuǎn)換成對應(yīng)的實體類,通常一個表封裝成一個類。這些類用來同數(shù)據(jù)庫進行通信,并被傳回業(yè)務(wù)層。使用三層結(jié)構(gòu)使得應(yīng)用程序更加清晰,更易于團隊開發(fā)、修改維護、部署及擴展。
數(shù)據(jù)層主要通過ADO.NET進行數(shù)據(jù)操縱從而為事務(wù)邏輯層提供數(shù)據(jù)服務(wù),例如返回數(shù)據(jù)結(jié)果、存儲操作結(jié)果等。鑒于.net本身具有的特點,從而決定了在這一平臺下的三層結(jié)構(gòu)具有快捷、簡便的優(yōu)勢。
2使用ASP.NET部署三層架構(gòu)
2.1ASP.NET簡介
ASP.NET是微軟公司基于ASP技術(shù)進行進一步完善而提出的一種新型Internet編程技術(shù)。原有的ASP技術(shù)中,由于服務(wù)器的與客戶端HTML在一起,為此使得頁面代碼加長,加大了程序邏輯的理解難度。而ASP.NET作為一種新型的獨立于瀏覽器的編程模式,由于采用了面向?qū)ο蟮摹⑿瘦^高的方法創(chuàng)建動態(tài)Web,提供一種新的編程模型和結(jié)構(gòu),可生成擴展情和穩(wěn)定性更好的應(yīng)用程序,并提供更好的安全保護。作為一種建立于通用語言之上的程序架構(gòu),ASP.NET將已經(jīng)編譯完成的基于NET環(huán)境的通用語言運行于服務(wù)器上。程序只有首次在服務(wù)器運行時需要編譯,為此較之ASP即時解釋程序要快。.NET框架與編程語言無關(guān),可以用許多語言來創(chuàng)建.NET程序,包括JScript.NET、VisualBasic.NET、VisualC++.NET與C#等。最新的.NETFramework版本為4.0,Microsoft公司為它進一步改進和添加了控件,并加入了LINQ技術(shù)、SEO(SearchEngineOptimization,搜索引擎優(yōu)化)和輸出緩存等功能。
3)采用“cod-behind”方式編寫代碼。使用cod-behind方式進行代碼編寫使得代碼編寫更為方便、簡潔,從而有效地降低了系統(tǒng)的開發(fā)以及后期維護費用。
4)適時更新。使用ASP.NET,維護人員就可以在不關(guān)閉服務(wù)器或者是停止使用應(yīng)用程序的前提下就實現(xiàn)文件更新。由于程序文件不會被加鎖,為此就可以在運行時實施覆蓋,從而實現(xiàn)適時更新。一旦文件完成更新,系統(tǒng)就會以溫和的方式切換到最新版本運行。
2.3 實現(xiàn)方式
2.3.1搭建三層結(jié)構(gòu)的系統(tǒng)基本框架
介紹搭建基于三層結(jié)構(gòu)的系統(tǒng)基本框架的步驟:
1)創(chuàng)建一個空白解決方案
2)分別搭建模型層、數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層。
3)添加各層之間的相互依賴。三層結(jié)構(gòu)中各層的依賴順序是表示層依賴業(yè)務(wù)邏輯層;業(yè)務(wù)邏輯層依賴數(shù)據(jù)訪問層;表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層都依賴模型層。
3)業(yè)務(wù)邏輯層的實現(xiàn)
業(yè)務(wù)邏輯層除了在這里負(fù)責(zé)所有業(yè)務(wù)的邏輯處理外,還用作表示層與數(shù)據(jù)訪問層之間的數(shù)據(jù)傳遞。一般情況下,數(shù)據(jù)訪問層公開的方法會在業(yè)務(wù)邏輯層有個相對應(yīng)的方法。該方法沒有業(yè)務(wù)邏輯上的處理,僅僅是調(diào)用了一下數(shù)據(jù)訪問層的相關(guān)方法,起著數(shù)據(jù)傳遞的作用。
4)表示層的實現(xiàn)
新建系統(tǒng)項目的Web層會有一個default.aspx的頁面文件,用戶界面將由WebForms、自定義控件、服務(wù)器端控件和JavaScript組成??梢允褂帽砀窕駾iv+CSS樣式表布局,還可應(yīng)用母版頁、主題、皮膚創(chuàng)建一種特定的風(fēng)格。
3結(jié)束語
當(dāng)然,在ASP.NET中實現(xiàn)三層結(jié)構(gòu)的方法還有很多,上文僅是基于組件的開發(fā)舉了個簡單的例子。由于ASP.NET自身具有的特性,從而決定了這一結(jié)構(gòu)在B/S結(jié)構(gòu)軟件開發(fā)中必然占據(jù)舉足輕重的位置。
參考文獻:
[1]VinceV.ASP.NET3.5商用開發(fā)架構(gòu)精解[M].北京:清華大學(xué)出版社,2010:1-43.
[2]程琪,張白樺.ASP.NET動態(tài)網(wǎng)站開發(fā)項目化教程[M].2版.北京:清華大學(xué)出版社,2012:55-65.
[3]李彥,高博,唐繼強,等.ASP.NET4.0MVC敏捷開發(fā)給國起飛[M].北京:電子工業(yè)出版社,2011:76-84.