999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

網站開發的五層構架模塊化設計

2013-04-29 00:44:03鐘志東孟清
計算機時代 2013年8期

鐘志東 孟清

摘 要: 網站項目設計一般根據項目規模、安全要求和團隊工作方式等分別采用不同層次的設計構架,常用的構架有二層模型和三層模型。文章通過ASP.NET4.0(C#)介紹五層構架模塊化網站設計方法。從系統的安全性和技術層面把系統橫向分解為五層構架模式,再從業務功能考慮把系統縱向分塊,使得技術層次更加分明,模塊耦合度更低,模塊可重用性更高。五層構架模塊化設計把業務邏輯和數據庫嚴格與界面分開,系統安全得到保障,這是網站項目開發的理想構架模型。

關鍵詞: 網站項目設計; 五層構架; 模塊耦合度; 可重用性; 系統安全

中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2013)08-19-03

0 引言

在ASP.NET網站項目設計中,常用的系統構架模式為二層架構和三層架構[1],如圖1和圖2所示。安全性要求比較高的系統項目一般都基于三層架構方式開發。

圖1的開發模式只適應于SQLServer數據庫的開發,在這種模式中直接通過界面層的數據綁定控件調用SqlDataSource數據源,再由數據源建立數據庫連接,并直接執行數據庫的查詢語句或存儲過程來操作數據庫的數據(即增、刪、改和檢索操作),編程比較簡潔。其缺點是完全依賴于SQLServer數據庫,直接在界面層執行查詢語句系統安全性較差,也不利于團隊開發的分工協作。這種模式只適應于小型項目的開發。

圖2的開發模式由界面層的數據綁定控件直接調用業務實體類。這種模式雖然比使用SqlDataSource數據源模式復雜得多,但其具有很大的靈活性,它結合ADO.NET技術實現對來自不同的數據庫或數據文件的數據進行處理,在團隊開發的項目中被普遍采用。

三層構架的擴展如圖3所示[2],把中間邏輯層進一步拆分為三層,構成五層構架模式。五層構架模型從系統安全和技術層面把業務邏輯層進一步拆分為數據傳遞層、數據轉換層和執行查詢語句對象層,把業務邏輯嚴格與用戶界面隔離開來,以保障業務邏輯和數據的安全性。再從業務功能出發橫向分割,使系統更加細化、模塊化和標準化。把軟件開發過程設計成標準的組裝作業流程,技術層次分明,利于團隊各個技術能力層次的分工協作。第一層次由掌握網頁前端技術的技術人員承擔,第二層次可由初級程序人員承擔,第三層次由比較有經驗的高級程序人員承擔,第四層次可引用標準的ADO.NET技術封裝靜態類,第五層次由比較有經驗的數據庫技術人員承擔。

本文通過一個供應鏈管理信息系統項目的開發過程來展現五層構架模式的設計方法和技術特點。五層構架設計一般按照業務功能劃分模塊,在同一業務模塊再按構架層次劃分模塊,對整個系統功能從縱向和橫向進行切割。

1 用戶界面設計

用戶界面網頁的樣式和布局等技術這里不作介紹,著重介紹網頁文件的數據提交和接受的技術方法[3-4]。圖4所示是一個采購單的輸入界面,當采購單明細信息的商品數量輸入并回車時將顯示輸入的所有明細數據記錄,單擊 “確認”按鈕則生成一張采購單。

給出本網頁的部分代碼如下:

//實例化采購功能的數據傳遞類

ESCM.BLL.PurchaseManage bll=new ESCM.BLL.PurchaseManage();

//實例化采購功能的屬性類

ESCM.Model.PurchaseManage model=new

ESCM.Model.PurchaseManage ();

//GridView數據綁定

int editIndex=-1;

//執行DBAccess靜態分裝類的ExecuteScalar方法獲取臨時表的最大行記錄

object idno=DBAccess.ExecuteScalar(DBAccess.strConn,

CommandType.Text, "Select MAX(IdNo) From DetailTemp");

//獲取GridView編輯行

if (idno!=DBNull.Value) {

editIndex=Convert.ToInt32(idno)-1;

}

else {

//調用DBAccess靜態分裝類的ExecuteNonQuery方法,執行查詢語句,在臨時表中插入空記錄

DBAccess.ExecuteNonQuery(DBAccess.strConn,

CommandType.Text, "Insert Into DetailTemp(WareName)

Values('')");

editIndex=0;

}

//把臨時表記錄綁定到GridView并設置編輯行

gvDetailTemp.DataSource=DBAccess.ExecuteDataset

(DBAccess.strConn, CommandType.Text, "Select * From

DetailTemp");

gvDetailTemp.EditIndex=editIndex;

gvDetailTemp.DataBind();

//采購單添加按鈕事件方法代碼,把界面輸入的數據傳遞給屬性類對象

model.SupplierNo=Convert.ToInt32(ddlSupplier.SelectedValue);

model.SupplierFormNo=tbSupplierFormNo.Text.ToString();

model.Buyer=tbBuyer.Text.ToString();

model.PayState=rbPayState.SelectedValue;

model.Maker=lbMaker.Text.ToString();

model.Remark=tbRemark.Text.ToString();

model.PurchaseDate=Convert.ToDateTime

(tbPurchaseDate.Text.ToString());

//執行接受數據對象的方法

bll.Add(model);

本段代碼展示了用戶界面如何傳遞和接受數據的過程。網頁事件方法通過數據控件把相關數據傳遞給數據傳遞層的model對象,而model對象則作為bll對象的參數。

2 數據傳遞層對象

在數據傳遞層中包含兩個用戶自定義類[5],一個是ESCM.Model.PurchaseManage類,這是一個屬性類,該類只包含屬性成員,屬性成員與采購管理功能模塊基礎數據表的字段相對應,其部分代碼如下:

namespace ESCM.Model

{ public class PurchaseManage

{ public int PurchaseNo {set; get;} //采購單編號

public string Buyer {set; get;} //采購員

public string Maker {set; get;} //制單人

public string PayState {set; get;} //付款狀態

public DateTime PurchaseDate {set; get;} //制單日期

public decimal PurchasePrice {set; get;} //訂購價

…… //其他方法省略

}

}

另一個ESCM.BLL.PurchaseManage類是數據傳遞類,通過屬性類對象作為方法參數傳遞數據,每個方法體只包含一條語句,即調用數據轉換對象的相應方法的語句。由它把用戶界面數據傳遞給數據轉換對象,其部分代碼如下:

namespace ESCM.BLL

{ public class PurchaseManagement

{ //實例化采購管理模塊功能的數據轉換類

ESCM.DAL.PurchaseManagement dal=new ESCM.DAL

.PurchaseManagement();

//增加采購單信息

public int Add(ESCM.Model.PurchaseManagement model)

{ return dal.Add(model);

}

…… //其他方法省略

}

}

3 數據轉換層對象

數據轉換層的任務是把用戶界面傳遞過來的數據轉換成數據庫查詢語句相匹配的參數,并指定要被執行的查詢語句。這一層次的對象還有另外一個重要的角色,就是要承擔數據庫存儲過程難于應對的復雜業務邏輯,如隊列管理等。其部分代碼如下:

namespace ESCM.DAL

{ public class PurchaseManagement

{ //增加采購單信息

public int Add(ESCM.Model.PurchaseManagement model)

{ //把model對象相關成員屬性轉換為Object數組元素

Object[] paramValures=new object[] { model.SupplierNo,

model.SupplierFormNo,

model.Buyer,

model.PayState,

model.Maker,

model.Remark,

model.PurchaseDate

};

//調用DBAccess靜態封裝類的ExecuteNonQuery方法執行存儲過程

object obj=DBAccess.ExecuteNonQuery (DBAccess

.strConn, "ProPurchaseFormAdd", paramValures);

}

…… //其他方法省略

}

}

4 執行查詢語句層對象

本層的對象是一個通過ADO.NET技術執行各種查詢語句的類,可設計為標準的靜態封裝類,被所有功能模塊引用,更進一步地被所有項目引用[6]。該類包含一系列的靜態重載方法來執行各種各樣的查詢語句。微軟提供了標準的封裝類文件sqlhelper.cs,可在網上下載,在此不作贅述。

也可在對安全性要求不高且重用性較低的編碼中,為了簡化編程,直接在界面層調用本封裝類,如本文網頁代碼中所給出的對臨時表的操作一樣。

5 數據庫設計

良好的數據庫設計其基本標準是基礎數據表盡可能避免重復字段,基礎數據表要建立必要的關聯約束和索引,用視圖組織查詢字段,用存儲過程實現數據的增、刪、改和檢索操作。

6 結束語

本文以商務網站系統中采購單信息輸入功能為例,探討了網站開發中的五層構架模塊化設計方法。只要掌握了本功能的設計,就可以此類推,掌握整個系統的五層構架模塊化設計方法。

五層構架模式是三層構架的擴展,在網站項目開發中具有如下突出的優點:

⑴ 代碼安全性比較高,具體的業務邏輯和數據處理遠離界面層,系統不易受到攻擊;

⑵ 構架層次與技術層次緊密相關,技術層次界線分明,比較易于開發團隊的各個技術層級的工作分工與協作;

⑶ 按技術層面和業務功能劃分模塊,系統耦合性比較低;

⑷ 代碼重用性比較高,設計的中間業務層類很容易引用到其他的類似項目中;

⑸ 類方法技巧的重用性比較高,在一個業務功能模塊比較好的設計方法可以直接引用到另一個功能模塊中;

⑹ 每個過程技術分明,關聯性明確,易于標準化設計。

五層構架模塊化系統設計不僅適用于網站項目的開發,也適用于所有管理信息系統項目的開發。

參考文獻:

[1] 戴上平,丁士鋒等.ASP.NET3.5完全自學手冊[M].機械工業出版社,2009.

[2] 鐘志東.趙中文等.ASP.NET 4(C#)項目開發教程——面向工作過程[M].北京航空航天大學出版社,2011.

[3] 溪江華.圣殿祭司的ASP.NET2.0開發詳解[M].電子工業出版社,2006.

[4] 馬偉.ASP.NET 4權威指南[M].機械工業出版社,2011.

[5] 周禮.C#和.NET3.0第一步[M].清華大學出版社,2008.

[6] 微軟.Sqlhelper類[DB/OL].百度百科.

主站蜘蛛池模板: 99精品在线看| 亚洲婷婷在线视频| 欧美区一区| jizz国产视频| 亚洲一区国色天香| 欧美黑人欧美精品刺激| 在线观看无码a∨| 免费播放毛片| 免费人成网站在线高清| 国产午夜一级毛片| 国产嫖妓91东北老熟女久久一| 免费毛片全部不收费的| 日韩精品一区二区深田咏美| 国产在线观看第二页| 性欧美精品xxxx| 国内自拍久第一页| 真人高潮娇喘嗯啊在线观看| 四虎国产永久在线观看| 国产黄在线免费观看| 国产香蕉一区二区在线网站| 欧美高清国产| 婷婷六月在线| 一区二区三区在线不卡免费 | 成人无码一区二区三区视频在线观看| 久久综合五月| 国产91高跟丝袜| www.亚洲色图.com| 亚洲—日韩aV在线| 一区二区日韩国产精久久| 欧美精品一二三区| 激情無極限的亚洲一区免费| 日韩大片免费观看视频播放| 日本精品视频一区二区| 国产打屁股免费区网站| 91欧美在线| 欧美全免费aaaaaa特黄在线| 欧美19综合中文字幕| 久久精品中文无码资源站| 夜夜操国产| 国产丰满大乳无码免费播放 | 免费看a级毛片| 欧美成人精品一级在线观看| 日本91在线| 激情综合激情| 国产在线视频导航| 亚洲中文精品人人永久免费| 亚洲天堂首页| 91外围女在线观看| 2021国产精品自拍| 免费高清毛片| 草草线在成年免费视频2| 午夜欧美理论2019理论| 日韩一区二区三免费高清| 国产在线高清一级毛片| 成人小视频网| 久久久久免费看成人影片| 999精品色在线观看| 99热这里只有精品5| 久久久国产精品免费视频| 综合人妻久久一区二区精品| 视频国产精品丝袜第一页| 久久国产精品影院| 婷婷色狠狠干| 午夜a视频| 亚洲中久无码永久在线观看软件| 亚洲一本大道在线| 午夜日韩久久影院| 久久综合亚洲鲁鲁九月天| 国产激情在线视频| 午夜视频免费一区二区在线看| 91香蕉视频下载网站| 国产不卡国语在线| 在线无码九区| 亚洲欧美不卡| 亚洲香蕉久久| 亚洲精品中文字幕无乱码| 色偷偷一区| 亚洲国产欧美国产综合久久| 福利在线不卡一区| 国产黑人在线| 国产精品林美惠子在线观看| AV无码一区二区三区四区|