国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于三層架構(gòu)的高校管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2014-09-10 12:26張洋葛良全
電腦知識(shí)與技術(shù) 2014年6期
關(guān)鍵詞:管理系統(tǒng)

張洋 葛良全

摘要:針對(duì)傳統(tǒng)架構(gòu)設(shè)計(jì)的高校管理系統(tǒng)存在的穩(wěn)定性差、安全性差、可擴(kuò)展性差等問題,開發(fā)者逐漸傾向采用分層的思想來設(shè)計(jì)該類系統(tǒng)。實(shí)踐表明,將系統(tǒng)分為三層來設(shè)計(jì)對(duì)于提高系統(tǒng)穩(wěn)定性、安全性、可擴(kuò)展性等較為有效,并且可以提高代碼的復(fù)用率,以及增強(qiáng)系統(tǒng)的易維護(hù)性、可移植性等。這種三層架構(gòu)通常把系統(tǒng)分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。

關(guān)鍵詞:三層架構(gòu);web應(yīng)用;管理系統(tǒng);C#

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)06-1244-02

Design and Implementation of Management System of Colleges and Universities Based on 3-tier Architecture

ZHANG Yang,GE Liang-quan

(College of Information Science & Technology, Chengdu University of Technology, Chengdu 610059, China)

Abstract: According to the problem of poor stability , poor security, and poor scalability in the design of traditional management system architecture , developers tend to use the hierarchical thinking to the design of such systems. The long-term practice shows that, the system that divided into three layers can be more effective to improve the stability, security, and scalability of the system, and can improve the reusability of code, and enhance the system maintainability, portability, etc.. The three layer architecture often divides the system into presentation layer, business logic layer, data access layer.

Key words: 3-tier application; web application; management system; C#

隨著計(jì)算機(jī)技術(shù)的發(fā)展,軟件的發(fā)展也是日新月異,軟件的規(guī)模也在不斷擴(kuò)大。從初期幾百行代碼的小程序到現(xiàn)在幾百萬行的大型軟件系統(tǒng),軟件的結(jié)構(gòu)越來越復(fù)雜,代碼越來越長(zhǎng),因此軟件的維護(hù)也是越來越困難。開發(fā)者一直在追尋一種合理的設(shè)計(jì),使得開發(fā)出來的軟件系統(tǒng)功能完善、結(jié)構(gòu)優(yōu)良并且具有較高穩(wěn)定性、安全性、可擴(kuò)展性,易移植、易維護(hù),同時(shí)代碼的重用率高。在開發(fā)人員不斷的實(shí)踐與探索中,發(fā)現(xiàn)將軟件分層設(shè)計(jì)可以很大程度的提高軟件的穩(wěn)定性、安全性、可擴(kuò)展性以及可維護(hù)性。分層設(shè)計(jì)使得層與層之間的依賴性降低,使用這種弱耦合結(jié)構(gòu)大大的提高了代碼的復(fù)用率。

早期運(yùn)用分層結(jié)構(gòu)的思想開發(fā)軟件時(shí),開發(fā)者采用兩層結(jié)構(gòu),兩層結(jié)構(gòu)主要是把界面層和代碼層分開,這使得代碼層既要實(shí)現(xiàn)邏輯判斷功能,同時(shí)也要實(shí)現(xiàn)數(shù)據(jù)操作的功能。這種結(jié)構(gòu)設(shè)計(jì)的軟件在提高安全性、代碼重用性以及可維護(hù)性等方面并沒有得到明顯的效果。因此,針對(duì)解決上述問題,三層架構(gòu)應(yīng)運(yùn)而生。該文較詳細(xì)的闡述了三層架構(gòu)的基礎(chǔ)概念,并以某高校管理系統(tǒng)的實(shí)現(xiàn)為例,逐步地描述了實(shí)現(xiàn)基于三層架構(gòu)的web應(yīng)用程序的開發(fā)過程。

1 三層架構(gòu)

所謂三層架構(gòu),就是在兩層結(jié)構(gòu)的基礎(chǔ)上,把代碼層分為兩個(gè)層,即把實(shí)現(xiàn)邏輯判斷功能的代碼與實(shí)現(xiàn)數(shù)據(jù)操作功能的代碼分開。這樣,應(yīng)用程序就呈現(xiàn)出三個(gè)方面:數(shù)據(jù)操作、邏輯處理、界面表示,對(duì)應(yīng)到三層架構(gòu),它們分別被是:數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層。

數(shù)據(jù)訪問層(DAL):數(shù)據(jù)訪問層提供操作數(shù)據(jù)庫的功能,包括數(shù)據(jù)庫的查詢、新增、修改、刪除等操作。它被業(yè)務(wù)邏輯層調(diào)用,響應(yīng)業(yè)務(wù)邏輯層的請(qǐng)求,將抓取的數(shù)據(jù)返回給業(yè)務(wù)邏輯層。數(shù)據(jù)訪問層并不對(duì)數(shù)據(jù)做任何處理,它僅僅只負(fù)責(zé)抓取業(yè)務(wù)邏輯層請(qǐng)求的數(shù)據(jù)。

業(yè)務(wù)邏輯層(BLL):業(yè)務(wù)邏輯層被表示層調(diào)用,同時(shí)又可以調(diào)用數(shù)據(jù)訪問層,它是連接表示層和數(shù)據(jù)訪問層的橋梁。業(yè)務(wù)邏輯層在表示層和數(shù)據(jù)訪問層之間完成數(shù)據(jù)交互的功能。它接受表示層傳來的參數(shù),再把這些參數(shù)傳遞給數(shù)據(jù)訪問層,數(shù)據(jù)訪問層根據(jù)這些參數(shù)抓取符合條件的數(shù)據(jù),然后將抓取得的數(shù)據(jù)交由業(yè)務(wù)邏輯層返回給表示層。業(yè)務(wù)邏輯層同時(shí)還要完成復(fù)雜的邏輯判斷、數(shù)據(jù)校驗(yàn)等功能。

表示層(UI):表示層調(diào)用業(yè)務(wù)邏輯層去訪問數(shù)據(jù)訪問層從而獲取數(shù)據(jù);同時(shí),表示層也會(huì)傳遞數(shù)據(jù)給業(yè)務(wù)邏輯層。通常我們也會(huì)在表示層做少量的邏輯判斷,例如校驗(yàn)用戶輸入數(shù)據(jù)格式是否合法等。由此看來,表示層并不一定要將所有的邏輯處理都交由業(yè)務(wù)邏輯層來做,在表示層做輕量的邏輯處理也無可厚非,畢竟這樣做可以使性能得到提高。

2 設(shè)計(jì)與實(shí)現(xiàn)

接下來在實(shí)踐項(xiàng)目中體會(huì)三層架構(gòu)理論。

項(xiàng)目背景:高校需要對(duì)新生信息進(jìn)行管理,如果使用傳統(tǒng)的管理方式不僅存在數(shù)據(jù)容易丟失的隱患,也存在數(shù)據(jù)管理無序的問題。同時(shí),高校各部門之間的數(shù)據(jù)同步也是十分重要的。因此,需要構(gòu)建web應(yīng)用系統(tǒng)來對(duì)新生數(shù)據(jù)進(jìn)行管理,以解決上述問題。

在實(shí)際開發(fā)中,為了方便整個(gè)項(xiàng)目的開發(fā),往往會(huì)在項(xiàng)目中建立幾個(gè)類庫,為了與三層架構(gòu)中的各層對(duì)應(yīng)起來,我們將類庫如下命名:OracleHelper、BusinessLogicLayer、DataAccessLayer、DataEntity。

BusinessLogicLayer表示業(yè)務(wù)邏輯層,DataAccessLayer表示數(shù)據(jù)訪問層;OracleHelper是Oracle數(shù)據(jù)庫的幫助類,它提供較底層的操作數(shù)據(jù)庫的方法,數(shù)據(jù)訪問層只需要傳遞符合接口要求的參數(shù)即可調(diào)用這些方法來操作數(shù)據(jù)庫。DataEntity是實(shí)體類庫。需要特別說明的是,DataEntity看似不屬于任何一層,但是它卻貫穿于整個(gè)三層架構(gòu)中,它是數(shù)據(jù)傳遞的媒介。DataEntity中封裝的每一個(gè)類都是一個(gè)實(shí)體,實(shí)體通常對(duì)應(yīng)數(shù)據(jù)庫中的一個(gè)表,表中的每個(gè)字段對(duì)應(yīng)一個(gè)公有屬性。

2.1 數(shù)據(jù)訪問層

業(yè)務(wù)邏輯要獲取數(shù)據(jù)必然要進(jìn)行數(shù)據(jù)庫的操作,通常不會(huì)讓業(yè)務(wù)邏輯直接去操作數(shù)據(jù)庫,而是將數(shù)據(jù)訪問層作為橋梁與數(shù)據(jù)庫產(chǎn)生聯(lián)系。下面IsExist函數(shù)的參數(shù)是sql語句,這個(gè)sql語句是通過用戶傳來的數(shù)據(jù)生成的。函數(shù)的功能是查詢出數(shù)據(jù)庫中是否存在滿足條件的數(shù)據(jù)行。ExecuteScalar函數(shù)是封裝在OracleHelper幫助類中的靜態(tài)方法。

using System.Data.OracleClient;

using System.Data;

public class DataAccessLayer

{public bool IsExist(string sqlStr)

{......

int n = Convert.ToInt32(OracleHelper.ExecuteScalar(Conn.SqlConn, CommandType.Text, sqlStr, parms));

return n > 0;

}}

2.2 業(yè)務(wù)邏輯層

業(yè)務(wù)邏輯層實(shí)現(xiàn)業(yè)務(wù)邏輯判斷。它接收表示層傳來的數(shù)據(jù),通常會(huì)將這些數(shù)據(jù)按照該層的業(yè)務(wù)邏輯進(jìn)行相應(yīng)的處理,然后再將處理后的結(jié)果傳遞給數(shù)據(jù)訪問層。當(dāng)數(shù)據(jù)訪問層返回?cái)?shù)據(jù)后,再做一次業(yè)務(wù)邏輯的逆處理,將結(jié)果返回給表示層。下面代碼片段首先用表示層傳來的參數(shù)生成了sql語句,然后調(diào)用數(shù)據(jù)訪問層,最后根據(jù)數(shù)據(jù)訪問層返回的結(jié)果再次做邏輯判斷。

public class BusinessLogicLayer

{public static string IsExist(string StuName)

{......

DataAccessLayer dal = new DataAccessLayer();

string sqlStr = @"SELECT COUNT(*) FROM STUTABLE WHERE STUNAME='小明'";

bool rsb = dal.IsExist(sqlStr);

if(rsb)

...... //數(shù)據(jù)已存在

else

...... //數(shù)據(jù)不存在

}}

2.3 表示層

表示層是最接近用戶的一層,它感知用戶的操作,并將結(jié)果返回,呈現(xiàn)給用戶。該層不會(huì)直接操作數(shù)據(jù)庫,而是通過業(yè)務(wù)邏輯層來訪問。下面是表示層的部分代碼,通過Request對(duì)象接收前臺(tái)界面?zhèn)鱽淼臄?shù)據(jù),然后調(diào)用業(yè)務(wù)邏輯層,最后將業(yè)務(wù)邏輯層返回的結(jié)果顯示在前臺(tái)界面上。此外,BusinessLogicLayer類中的IsExist方法是靜態(tài)的,因此不需要實(shí)例對(duì)象,可以直接通過BusinessLogicLayer類調(diào)用。

public void IsExist()

{......

string ExamCode = Request["ExamCode"].ToString().Trim();

string result = BusinessLogicLayer.IsExist(ExamCode);

...... //將結(jié)果顯示在界面上}

3 結(jié)束語

從上述三層架構(gòu)的具體應(yīng)用中可見,當(dāng)業(yè)務(wù)邏輯發(fā)生變化時(shí),幾乎可以不用修改數(shù)據(jù)訪問層和表示層。這就是分層設(shè)計(jì)帶來

的靈活性,它使得層與層之間的依賴性降低,使得各層的功能獨(dú)立,互不干擾,底層對(duì)于上層而言是“無知”的,改變上層的設(shè)計(jì)對(duì)于其調(diào)用的底層而言沒有任何影響,使用這種弱耦合結(jié)構(gòu)大大的提高了代碼的復(fù)用率和系統(tǒng)的可維護(hù)性。

參考文獻(xiàn):

[1] 劉仲英.管理信息系統(tǒng)分析與設(shè)計(jì)[M].北京:中國(guó)物資出版社,1993.

[2] 路紅武,尤楓,趙恒永.基于.NET企業(yè)信息資源管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2005(6):79-82.

[3] Stephen Walther.ASP. NET 技術(shù)內(nèi)幕[M].馬朝暉,譯.北京:機(jī)械工業(yè)出版社,2002.

[4] 陳趙云,董海燕,周永福.基于.NET Framework的Web管理系統(tǒng)研究與開發(fā)(C#)[J].電腦知識(shí)與技術(shù),2010,6(17):4660-4663.

[5] 常永英.ASP.NET 程序設(shè)計(jì)教程(C# 版)[M].北京:機(jī)械工業(yè)出版社,2009:116-122.

[6] Karli Watson.Christian Nagel.Beginning Visual C#2005[M].北京:清華大學(xué)出版社,2006:20-81.

[7] 王海燕.C#.NET下三層架構(gòu)數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(6):78-81.

[8] 郭勝.秦岸.馬麗.C#.NET程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2002:36-39.

[9] 斯梅切爾.C# 和.NET 2.0 實(shí)戰(zhàn)[M].施凡,譯.北京:人民郵電出版社,2008:13-19.

[10] 馬長(zhǎng)青,劉中合,劉賢喜.基于Web數(shù)據(jù)庫技術(shù)的系統(tǒng)開發(fā)[J].山東農(nóng)業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2005,36(3):467-470.

猜你喜歡
管理系統(tǒng)
基于James的院內(nèi)郵件管理系統(tǒng)的實(shí)現(xiàn)
基于Excel固定資產(chǎn)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
聯(lián)調(diào)聯(lián)試管理系統(tǒng)的研究及實(shí)現(xiàn)
基于LED聯(lián)動(dòng)顯示的違停管理系統(tǒng)
停車場(chǎng)尋車管理系統(tǒng)
生產(chǎn)管理系統(tǒng)概述
船舶壓載水管理系統(tǒng)
海盾壓載水管理系統(tǒng)
基于SNMP的IP地址管理系統(tǒng)開發(fā)與應(yīng)用
一種基于Web新型校園門禁管理系統(tǒng)
资兴市| 同仁县| 元江| 泉州市| 桃源县| 金山区| 措美县| 苍梧县| 肥西县| 岳阳市| 巴中市| 阿坝| 茂名市| 九龙城区| 通化市| 炎陵县| 会泽县| 河南省| 滁州市| 齐齐哈尔市| 利川市| 江城| 金塔县| 郎溪县| 嵊泗县| 桓仁| 嵩明县| 杭州市| 聂拉木县| 安西县| 鄢陵县| 安多县| 清苑县| 瑞安市| 佛冈县| 前郭尔| 宜兰县| 阿拉尔市| 横峰县| 罗江县| 延长县|