張姝
摘要:文中通過對(duì)ASP.NET技術(shù)的介紹,分析了采用分層模型的好處。對(duì)Web應(yīng)用程序中所廣泛采用的三層設(shè)計(jì)模型進(jìn)行分析介紹,最后以實(shí)例化的方式對(duì)三層模型開發(fā)的過程進(jìn)行詳細(xì)說明。
關(guān)鍵詞:.Net;Web應(yīng)用程序;設(shè)計(jì)模型
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)04-0109-02
1 概述
ASP.NET是微軟公司為滿足網(wǎng)絡(luò)化需求而推出的.NET開發(fā)平臺(tái),是一種Web環(huán)境中的應(yīng)用程序開發(fā)技術(shù),應(yīng)用十分廣泛。由于在ASP.NET技術(shù)中采用了更加合理的開發(fā)設(shè)計(jì)模型,使得Web環(huán)境中的應(yīng)用程序解決方案的結(jié)構(gòu)更合理,更便于維護(hù)。這里在對(duì)ASP.NET技術(shù)和相關(guān)特點(diǎn)進(jìn)行介紹后,對(duì)面向Web用戶程序開發(fā)的三層設(shè)計(jì)模型進(jìn)行重點(diǎn)分析,并以工程實(shí)例的方式對(duì)此類設(shè)計(jì)模型的實(shí)現(xiàn)過程進(jìn)行說明。
2 ASP.NET技術(shù)優(yōu)點(diǎn)分析
ASP技術(shù),即Active Server Page,是ASP.NET技術(shù)廣泛應(yīng)用之前,在Web應(yīng)用程序開發(fā)領(lǐng)域中的一種主流開發(fā)技術(shù)。利用ASP技術(shù),能夠非常容易地將VB-Script語言所編寫的網(wǎng)絡(luò)服務(wù)器腳本嵌入到Web頁面中,然后在服務(wù)器端對(duì)相應(yīng)的頁面內(nèi)容進(jìn)行動(dòng)態(tài)生成;此外,還能夠通過多種類型的COM組件實(shí)現(xiàn)與數(shù)據(jù)庫的連接,進(jìn)而為用戶提供更加強(qiáng)大的事務(wù)處理功能。正是由于這些特性,才使得ASP技術(shù)在Web程序開發(fā)中得到廣泛應(yīng)用。
SP.NET技術(shù)是一種基于微軟.NET平臺(tái)的Web環(huán)境應(yīng)用程序開發(fā)技術(shù)。該技術(shù)主要以CLR為基礎(chǔ),能夠?qū)?NET Framework環(huán)境中所提供的所有功能進(jìn)行調(diào)用?;贏SP.NET所開發(fā)的Web程序,能夠?yàn)楫惓?刂啤㈩愋桶踩?、功能繼承與動(dòng)態(tài)編譯等提供全面支持。同時(shí),在ASP.NET程序中,還能夠?yàn)槎喾N不同面向?qū)ο缶幊痰膹?qiáng)類型語言提供支持,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中各種復(fù)雜控制邏輯的編寫,如Visual C#、Visual Basic.NET等。主流ASP.NET技術(shù)主要為Web Form編程模型,可以實(shí)現(xiàn)從底層系統(tǒng)自動(dòng)向客戶、服務(wù)器層之間的交互;同時(shí),還為用戶提供了完善的系統(tǒng)狀態(tài)管理功能,使得系統(tǒng)能夠在不同的頁面請(qǐng)求之間,對(duì)頁面數(shù)據(jù)進(jìn)行維護(hù)。開發(fā)人員大基于頁面的應(yīng)用程序開發(fā)中,還能夠使用多種服務(wù)器控件。
3 基于分層理念的Web應(yīng)用程序設(shè)計(jì)
3.1 分層的概念
分層模型已經(jīng)成為工程開發(fā)領(lǐng)域中的優(yōu)秀的設(shè)計(jì)思路。在Internet中廣泛采用的TCP/IP協(xié)議,就是一種典型的分層設(shè)計(jì)模型。在互聯(lián)網(wǎng)發(fā)展過程中,TCP/IP協(xié)議所起到的作用至關(guān)重要。TCP/IP協(xié)議體系能夠在互聯(lián)網(wǎng)領(lǐng)域中獲得成功,主要利益于其中所采用的分層模型,這也就決定了現(xiàn)有的網(wǎng)絡(luò)協(xié)議中都普遍采用這種分層理念的設(shè)計(jì)思路。
3.2 應(yīng)于用Web環(huán)境的應(yīng)用程序三層模型
作為一種分布式的應(yīng)用程序,Web程序中功能的實(shí)現(xiàn)主要由服務(wù)器端的Web服務(wù)器與客戶端的瀏覽器互相配合才能實(shí)現(xiàn)。這種程序的實(shí)現(xiàn)結(jié)構(gòu)又可以稱為B/S結(jié)構(gòu)。B/S結(jié)構(gòu)中的大部分功能與邏輯主要在服務(wù)器端來實(shí)現(xiàn)。
參考前面所介紹的Web應(yīng)用程序與Asp.NET技術(shù)中的優(yōu)點(diǎn),人們?cè)趯?shí)際的工作中逐漸找到一種基于ASP.NET技術(shù)體系的三層Web應(yīng)用程序開發(fā)設(shè)計(jì)模型。在這種三層設(shè)計(jì)模型中,可以將Web應(yīng)用程序劃分為三個(gè)功能完善的基本層次,即:用戶界面層、業(yè)務(wù)邏輯層以及數(shù)據(jù)訪問層。具體如下:
1)用戶界面層
用戶界面層即User Interface Tier,主要用于對(duì)客戶瀏覽器中的用戶界面顯示進(jìn)行實(shí)現(xiàn)。在用戶界面中,可以選擇和采用適當(dāng)?shù)男问綄?duì)業(yè)務(wù)邏輯層所傳送的數(shù)據(jù)信息進(jìn)行可視化顯示。在此過程中,主要通過HTML標(biāo)記與CSS模式來實(shí)現(xiàn)。同時(shí),用戶界面層還負(fù)責(zé)獲取用戶通過界面所輸入的數(shù)據(jù),在對(duì)相關(guān)數(shù)據(jù)進(jìn)行有效性校驗(yàn)的基礎(chǔ)上,將用戶錄入的數(shù)據(jù)傳送給業(yè)務(wù)邏輯層。
2)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層即Business Logic Tier,該層在整個(gè)模型中主要作為中間層來使用,是整個(gè)分層模型中的最重要層。該層的主要作用就是為用戶界面層提供功能調(diào)用支持,同時(shí),還能夠利用數(shù)據(jù)訪問層所提供的功能,對(duì)系統(tǒng)數(shù)據(jù)庫進(jìn)行訪問。在具體的應(yīng)用中,該層需要根據(jù)整個(gè)系統(tǒng)的功能和性能設(shè)計(jì),對(duì)工程實(shí)現(xiàn)中的關(guān)鍵對(duì)象進(jìn)行構(gòu)造,實(shí)現(xiàn)工程中的大部分邏輯控制與功能。
3)數(shù)據(jù)訪問層
數(shù)據(jù)訪問層即Data Access Tier,通常作為整個(gè)分層體系的最底層來使用。該層的主要功能和作用是實(shí)現(xiàn)與系統(tǒng)數(shù)據(jù)庫的交互,也就是對(duì)數(shù)據(jù)庫中的數(shù)據(jù)和信息進(jìn)行查詢、插入、刪除操作。通過數(shù)據(jù)訪問層,能夠?yàn)檎麄€(gè)體系中的業(yè)務(wù)邏輯層提供服務(wù),并根據(jù)業(yè)務(wù)邏輯層的具體需求,從相應(yīng)的數(shù)據(jù)庫中提取數(shù)據(jù)信息,或者對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行修改。相關(guān)數(shù)據(jù)表明數(shù)據(jù)訪問層優(yōu)化,可以有效提高整個(gè)系統(tǒng)的性能與可靠性。
4 工程實(shí)例分析
本節(jié)中所介紹的工程實(shí)例,是一個(gè)企業(yè)的信息集成管理系統(tǒng),所包含的功能相對(duì)簡(jiǎn)單,主要有:公文傳送、文件審批、物品管理以及電子論壇等。該信息管理系統(tǒng)作為企業(yè)所投資研發(fā)的Web應(yīng)用程序,可以為所有的授權(quán)企業(yè)員工提供網(wǎng)絡(luò)接入功能,并根據(jù)各自的權(quán)限來完成相應(yīng)的工作內(nèi)容。該系統(tǒng)所軟件設(shè)計(jì)結(jié)構(gòu)就是上述的三層模型。接下來,主要針對(duì)該系統(tǒng)在實(shí)現(xiàn)與開發(fā)過程中的電子論壇進(jìn)行介紹。
眾所周知,電子論壇主要是為企業(yè)員工提供一個(gè)信息化平臺(tái),利用該平臺(tái)可以發(fā)表觀點(diǎn)、咨詢問題與討論熱點(diǎn),并能夠?yàn)橛脩籼峁┪恼掳l(fā)表、觀點(diǎn)回復(fù)等功能。在該工程的開發(fā)與實(shí)現(xiàn)過程中,所采用的開發(fā)工具為微軟公司所推出的Visual Studio.net,利用Visual C#為系統(tǒng)提供邏輯編碼。在Visual Studio.net平臺(tái)中,整個(gè)工程主要作為一個(gè)Solution來處理;相應(yīng)地,在分層模型中每個(gè)層,則與項(xiàng)目所對(duì)應(yīng);所有的項(xiàng)目都包含在方案中。所有的項(xiàng)目,都有開發(fā)平臺(tái)為其提供的命名空間,這樣做的目的不僅能夠?yàn)椴煌a之間的調(diào)用提供便利,還能夠有效避免重復(fù)命名與沖突。具體而言,在本工程中,所包含的項(xiàng)目主要有四個(gè),其中,Web項(xiàng)目、BussinessFacade項(xiàng)目和DataAccess項(xiàng)目分別與設(shè)計(jì)模式中的層次相對(duì)應(yīng)。此外,則還包含Common項(xiàng)目,主要用于對(duì)不同層之間的數(shù)據(jù)接口進(jìn)行定義。下面對(duì)這四個(gè)不同的項(xiàng)目進(jìn)行介紹。
圖1 系統(tǒng)中的電子論壇功能實(shí)現(xiàn)結(jié)構(gòu)
4.1 Web項(xiàng)目
Web項(xiàng)目與用戶界面層是對(duì)應(yīng)關(guān)系,可以將項(xiàng)目類型設(shè)定為“ASP.net Web Application”。在該層中還包括了二十多個(gè)Web Form頁面,所有的Web Form頁面的顯示部分都能夠存入到aspx文件中,而對(duì)應(yīng)的控制代碼則被存放到aspx.cs文件中。對(duì)于每個(gè)Web Form頁面而言,都能夠與頁面中的類相對(duì)應(yīng),所有的對(duì)應(yīng)類則由System.Web.UI.Page派生出來,這樣,在這些類中,就能夠?qū)γ總€(gè)頁面中所使用的Server Controls及其對(duì)應(yīng)的邏輯控制進(jìn)行準(zhǔn)確定義。同時(shí),在該層中,還能夠使用BusinessFacade項(xiàng)目中所提供的多種功能,只要在每個(gè)頁面中將BusinessFacade項(xiàng)目所對(duì)應(yīng)的名稱空間引入進(jìn)來即可。
4.2 BusinessFacade項(xiàng)目
對(duì)于BusinessFacade項(xiàng)目,主要與三層結(jié)構(gòu)中的“業(yè)務(wù)邏輯層”相對(duì)應(yīng),可以將該項(xiàng)目類型選擇為“Class Library”。在該層中,所定義的類數(shù)量較多,這些類與系統(tǒng)中的四大功能相對(duì)應(yīng)。對(duì)于這些定義的類,其中的成員函數(shù)能夠根據(jù)用戶界面層的具體需要來進(jìn)行定義。需要補(bǔ)充的是,在該中可以通過引入DataAccess項(xiàng)目的名稱空間,并利用其中所提供的功能對(duì)系統(tǒng)數(shù)據(jù)庫進(jìn)行訪問。
4.3 DataAccess項(xiàng)目
對(duì)于DataAccess項(xiàng)目,主要與三層結(jié)構(gòu)中的“數(shù)據(jù)訪問層”相對(duì)應(yīng),在實(shí)現(xiàn)的過程中可以將項(xiàng)目類型定義為“Class Library”。同樣,在該層中,也包含了四個(gè)不同的類,每個(gè)類中的成員函數(shù)都能夠響應(yīng)業(yè)務(wù)邏輯層的需求,對(duì)SQL Server中所提供的“存儲(chǔ)過程”進(jìn)行訪問。對(duì)于所定義的四個(gè)類,都包括了System.Data.SqlClient.SqlDataAdapter類型所定義的私有成員變量。這是,SqlDataAdapter主要由.NET平臺(tái)所提供,可以實(shí)現(xiàn)在SQL Server數(shù)據(jù)庫與DataSet類所創(chuàng)建對(duì)象之間的數(shù)據(jù)交互。其中,作為ADO.NET構(gòu)架中的關(guān)鍵類,DataSet類中包含了多種DataTable,這些DataTable能夠用于存儲(chǔ)和數(shù)據(jù)庫進(jìn)行交互時(shí)的相關(guān)數(shù)據(jù)。
4.4 Common項(xiàng)目
在不同的層結(jié)構(gòu)之間,為了能夠?qū)崿F(xiàn)數(shù)據(jù)的交互與傳遞,就必須在各層之間建立起統(tǒng)一的數(shù)據(jù)接口。所以,在軟件開發(fā)過程上,為了能夠?qū)崿F(xiàn)該功能,在三個(gè)層次所對(duì)應(yīng)的項(xiàng)目以外,還設(shè)計(jì)和開發(fā)了Common項(xiàng)目,可以將該項(xiàng)目的類型設(shè)置為“Class Library”。對(duì)于上述項(xiàng)目Web、BusinessFacade與DataAccess等項(xiàng)目中所定義的類,其成員函數(shù)所采用的參數(shù)與返回值類型,則能夠采用Common項(xiàng)目中所定義的類,這些類能夠?yàn)椴煌瑢又g的數(shù)據(jù)傳送提供更加標(biāo)準(zhǔn)的接口。
5 結(jié)論
從軟件工程的角度來看,采用基于三層結(jié)構(gòu)的設(shè)計(jì)模型,能夠在軟件工程的設(shè)計(jì)、開發(fā)、測(cè)試與維護(hù)的不同階段起到重要的作用,同時(shí),ASP.NET技術(shù)體系所具有的優(yōu)秀特點(diǎn),也對(duì)于優(yōu)化工程結(jié)構(gòu)至關(guān)重要。所以,ASP.NET平臺(tái)中的Web應(yīng)用程序三層設(shè)計(jì)模型,也就成為整個(gè)軟件能夠成功研發(fā)的基礎(chǔ)。
參考文獻(xiàn):
[1] 高揚(yáng). 基于.NET平臺(tái)的三層架構(gòu)軟件框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(2):77-80.
[2] 張軍偉. 基于三層框架的C#ASP.NET程序設(shè)計(jì)[J].電腦編程技巧與維護(hù),2010(9):28-30.
[3] 包芳. C#項(xiàng)目開發(fā)使用教程[M].北京:清華大學(xué)出版社,2013:119-121.
[4] 明日科技. ASP.NET從入門到精通[M].3版.北京:清華大學(xué)出版社,2012.