劉澤波,劉太甫
(黃岡職業(yè)技術(shù)學(xué)院成教學(xué)院,湖北黃岡438002)
當(dāng)前Web應(yīng)用為用戶提供了一種全新解決方案以改善用戶的應(yīng)用體驗和應(yīng)對人們對Web應(yīng)用日益苛刻的要求,Web應(yīng)用要不斷滿足簡化開發(fā)的復(fù)雜性、需求的可變性和快速開發(fā)的要求。在這個背景下,高校需要利用現(xiàn)代Web開發(fā)技術(shù)構(gòu)建一個自學(xué)考試統(tǒng)一信息管理平臺,從而實現(xiàn)數(shù)據(jù)共享、應(yīng)對日益擴大的規(guī)模和提高信息管理效率。
MVC設(shè)計的目的是要填平人類用戶的思維模式和計算機的數(shù)字模型之間的鴻溝。自2007年秋微軟宣布將以ASP.NET為核心創(chuàng)建基于MVC的現(xiàn)代 Web開發(fā)平臺-ASP.NET MVC框架,并于2009年3月13日發(fā)布 ASP.NET MVC 1版本,其后幾乎每年都推出一個新版本,功能越來越強大和靈活。
MVC主旨在于簡化軟件開發(fā)的復(fù)雜度,以一種概念簡單、權(quán)責(zé)分明的架構(gòu)來引導(dǎo)開發(fā)流程,將業(yè)務(wù)邏輯層和數(shù)據(jù)表現(xiàn)層分離,編寫具有模塊化和易維護性的程序。MVC將應(yīng)用程序劃分為三個主要單元:模型(M)、視圖(V)、控制器(C),它們有各自的工作職責(zé)。模型處理與數(shù)據(jù)有關(guān)的任務(wù),描述了要處理的數(shù)據(jù)以及修改和操作數(shù)據(jù)的業(yè)務(wù)規(guī)則。視圖負(fù)責(zé)所有與用戶有關(guān)的接口,主要用于向用戶展示信息和接收用戶的輸入??刂破魇且晥D和模型之間主要的銜接,用于處理來自用戶、整個應(yīng)用程序流以及特定應(yīng)用程序邏輯的通信。
ASP.NET MVC使開發(fā)人員可以在.NET平臺上,借助MVC設(shè)計模式開發(fā)Web應(yīng)用以發(fā)揮其獨特優(yōu)勢:(1)分解關(guān)注點與可維護性:其非常清楚的“分解關(guān)注點”架構(gòu)既能使項目易于維護,也能使項目可以應(yīng)對需求的變更,以加快項目開發(fā)速度和提高客戶滿意度。(2)可擴展性:ASP.NET MVC框架的組件都是可定制可替換設(shè)計的,可以替換原有的顯示引擎、URL重寫策略或者其他模塊以適應(yīng)特殊需求。(3)可測試性:其本身就是基于分離的結(jié)構(gòu)讓應(yīng)用程序的測試性得到大大的提升。(4)約定優(yōu)于配置:ASP.NET MVC應(yīng)用程序?qū)s定的依賴性很強,這樣可避免開發(fā)人員配置具體化約定可以設(shè)置的項目,簡化應(yīng)用程序開發(fā)工作。
面向?qū)ο箝_發(fā)方式是主流開發(fā)范式,開發(fā)人員是同樣以面向?qū)ο蟮乃季S方式分析解決對數(shù)據(jù)庫的操作問題,理想的做法是開發(fā)人員使用面向?qū)ο蠹夹g(shù)的同時并提供訪問不同類型數(shù)據(jù)源的統(tǒng)一方式標(biāo)準(zhǔn),這恰好是對象關(guān)系映射技術(shù)的終極目標(biāo)。Entity Framework是微軟的標(biāo)準(zhǔn)ORM解決方案,是在ADO.NET數(shù)據(jù)訪問和LINQ查詢技術(shù)基礎(chǔ)上構(gòu)建全新的完整數(shù)據(jù)訪問框架。
采用Entity Framework開發(fā)應(yīng)用程序優(yōu)點是明顯的,一方面可讓開發(fā)人員通過以應(yīng)用程序為中心的概念模型來進(jìn)行工作,不用對特定的數(shù)據(jù)源有硬編碼依賴性。另一方面開發(fā)人員在改變概念模型和特定存儲架構(gòu)之間的映射時可不更改應(yīng)用程序代碼,使用可映射到各種存儲架構(gòu)的一致應(yīng)用程序?qū)ο竽P?,同時LINQ為查詢提供針對概念模型的編譯時語法驗證。
自學(xué)考試統(tǒng)一信息管理平臺系統(tǒng)架構(gòu)如圖1所示。
圖1 自學(xué)考試統(tǒng)一信息管理平臺架構(gòu)
表現(xiàn)層:它是用戶與系統(tǒng)交互的主要接口,它將后臺數(shù)據(jù)通過一定的格式向用戶展現(xiàn),同時可接收用戶的請求,通過與業(yè)務(wù)邏輯層交互協(xié)調(diào)處理用戶請求。系統(tǒng)的表現(xiàn)層在處理客戶端請求和頁面邏輯采用ASP.NET MVC3框架,使用jQuery技術(shù)并結(jié)合圖片、CSS控制和展現(xiàn)頁面布局和設(shè)計。系統(tǒng)應(yīng)用流程由ASP.NET MVC中的View接收HTTP請求,然后發(fā)送到Controller并根據(jù)請求內(nèi)容更新Model,最后將Model加載到對應(yīng)的View。
業(yè)務(wù)邏輯:它負(fù)責(zé)表現(xiàn)層和數(shù)據(jù)訪問層的連接,在架構(gòu)中起到承上啟下的作用。業(yè)務(wù)邏輯層主要功能是按業(yè)務(wù)需求處理數(shù)據(jù),它根據(jù)前臺不同的請求和系統(tǒng)業(yè)務(wù)定義的規(guī)則,通過對封裝在倉儲模型中的添加、修改、刪除和查詢等方法(數(shù)據(jù)訪問層)的請求調(diào)用進(jìn)行數(shù)據(jù)處理,調(diào)用者將獲取返回的數(shù)據(jù)處理結(jié)果。在本項目設(shè)計中,業(yè)務(wù)邏輯層直接在控制器中實現(xiàn)并調(diào)用。數(shù)據(jù)訪問層:在系統(tǒng)中基于Entity Framework實現(xiàn)數(shù)據(jù)訪問層,系統(tǒng)使用EF產(chǎn)品組新發(fā)布的實用工具(EFPower Tool)自動生成以提高開發(fā)效率。在實體數(shù)據(jù)模型建立以后,編碼人員利用數(shù)據(jù)倉儲模式將所有系統(tǒng)業(yè)務(wù)需求的數(shù)據(jù)訪問方法進(jìn)行封裝,方便系統(tǒng)業(yè)務(wù)邏輯層調(diào)用。數(shù)據(jù)倉儲充分利用LINQ技術(shù)在實體集合的基礎(chǔ)上處理相對復(fù)雜的數(shù)據(jù)訪問邏輯。
自學(xué)考試統(tǒng)一信息管理平臺開發(fā)過程中,使用Visual Studio 2010作為集成開發(fā)環(huán)境,選擇C#4.0作為服務(wù)器后臺的編程語言,選定ASP.NET MVC 3框架為 Web前端技術(shù)。由于安裝 ASP.NET MVC3后同時自動安裝Entity Framework 4.1,所以項目直接使用的Entity Framework 4.1和倉儲模式實現(xiàn)模型。
根據(jù)項目需求和現(xiàn)有自學(xué)考試信息數(shù)據(jù)及結(jié)構(gòu),經(jīng)過詳細(xì)地分析和設(shè)計,在SQL Server 2008上設(shè)計和構(gòu)建系統(tǒng)所需的數(shù)據(jù)庫,數(shù)據(jù)庫中有19張數(shù)據(jù)表保存系統(tǒng)相關(guān)數(shù)據(jù)。主要數(shù)據(jù)包含考生信息數(shù)據(jù)、成績數(shù)據(jù)、專業(yè)和課程數(shù)據(jù)、通知信息數(shù)據(jù)和用戶基本數(shù)據(jù),輔助數(shù)據(jù)主要保存與學(xué)生信息相關(guān)的信息,如民族、職業(yè),部門等表,同時優(yōu)化數(shù)據(jù)庫表設(shè)計,減少數(shù)據(jù)量和冗余。
4.2.1 布局的實現(xiàn)
ASP.NET MVC 3中Razor的布局有助于使應(yīng)用程序的多個視圖保持一致外觀,而且其提供更簡潔的語法和更大的靈活性。本系統(tǒng)就利用此特性統(tǒng)一了界面的外觀,同時在布局中渲染分部視圖以顯示復(fù)雜的信息。
4.2.2 Controller和 View 的實現(xiàn)
系統(tǒng)Controller和View的創(chuàng)建可利用 ASP.NET MVC3框架中的基架為應(yīng)用程序的創(chuàng)建、讀取、更新和刪除(CRUD)功能生成所需的模板代碼。雖然不能奢望它創(chuàng)建整個應(yīng)用程序,但它可以讓程序員從瑣碎繁雜的工作中解脫出來,避免程序完全手動編寫代碼,還可以調(diào)整和編輯基架生成的代碼來創(chuàng)建自己的應(yīng)用程序。
通過基架生成Controller時會自動添加相應(yīng)的視圖文件和代碼,視圖也可任意編輯修改,同時配合jQuery腳本和CSS樣式文件,以達(dá)到所需的界面顯示需求。這也說明了ASP.NET MVC可以對HTML完全控制,當(dāng)然也可以手動編碼產(chǎn)生視圖文件。
4.2.3 第三方組件的應(yīng)用
為了縮短開發(fā)時間,系統(tǒng)使用了開源組件。利用MvcPager分頁控件,完成了大量用戶界面的Ajax分頁顯示;使用Autofac輕量級控制反轉(zhuǎn)容器有效降低類之間相互耦合,不但能增加架構(gòu)的彈性,也能有效降低系統(tǒng)的復(fù)雜度;還使用了Auto-Mapper對象映射工具,它是一個能通過流暢配置API將映射工作自動化產(chǎn)品,解決實體模型到視圖模型映射單調(diào)乏味的工作。
用戶體驗Web應(yīng)用程序,包含大量動態(tài)內(nèi)容。動態(tài)內(nèi)容是給Web應(yīng)用程序帶來安全隱患的根源之一,其中跨站腳本攻擊是最重要的安全隱患,目前在安全漏洞中排名第一,并引起開發(fā)人員的廣泛重視。系統(tǒng)中保存大量、不乏敏感和關(guān)鍵的業(yè)務(wù)數(shù)據(jù),所以為了提高系統(tǒng)的數(shù)據(jù)安全性,防止信息泄露和惡意者的攻擊,系統(tǒng)在防止跨站腳本攻擊、開放重定向和Cookie信息泄漏方面都有相應(yīng)的考慮和設(shè)計。
單元測試是軟件開發(fā)過程中的重要環(huán)節(jié),是軟件測試最小單位,主要是指軟件獨立被測試單元在與程序的其他部分完全隔離的前提下開展測試。單元測試作為無錯編碼的一種輔助手段,要求測試必須能重復(fù)執(zhí)行,且其結(jié)果必須是能信任的。單元測試貫穿于整個軟件系統(tǒng)的生命周期中,不管是在軟件重構(gòu)還是移植到新的運行環(huán)境中,因此可確保系統(tǒng)質(zhì)量。
本文結(jié)合自學(xué)考試統(tǒng)一信息管理平臺項目的設(shè)計開發(fā),通過對微軟.NET開發(fā)平臺最新的開發(fā)技術(shù)ASP.NET MVC和Entity Framework的分析和研究,借鑒成熟的分層模式技術(shù)構(gòu)建了系統(tǒng)的三層架構(gòu)設(shè)計,將新技術(shù)融合到一個完整的解決方案之中,設(shè)計并實現(xiàn)了一個靈活、快速開發(fā)的Web應(yīng)用。雖然新的技術(shù)給.NET平臺下的Web開發(fā)帶來了新的活力和改進(jìn),但它仍然存在著如 ASP.NET MVC缺少可重用的 UI控件等問題,但隨著ASP.NET MVC和 Entity Framework本身的版本升級更新的同時,也在不斷地完善和進(jìn)步。
[1]黃保翕.ASP.NET MVC2開發(fā)實戰(zhàn)[M].電子工業(yè)出版社,2011.
[2](美)米里特.ASP.NET 設(shè)計模式[M].楊明軍譯.清華大學(xué)出版社,2011.
[3](美)加洛韋.ASP.NET MVC 3 高級編程[M].孫遠(yuǎn)帥譯.清華大學(xué)出版社,2012.
[4]單東林,張曉菲,魏然.鋒利的 JQuery[M].人民郵電出版社,2009.
[5](美)約克.CSS入門經(jīng)典[M].侯普秀,王一飛譯.清華大學(xué)出版社,2008.
[6]郭鄭州,陳紅軍.SQL Server 2008完全學(xué)習(xí)手冊[M].清華大學(xué)出版社,2011.
[7]陳技能.NET軟件測試實戰(zhàn)技術(shù)大全[M].人民郵電出版社,2008.