2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

web程序分層結(jié)構(gòu)

 liuqg 2006-03-10
web程序分層結(jié)構(gòu)

今天突然想到分層的問題,可能有的晚了,不過問題可能不是很嚴(yán)重,因?yàn)槲业臄?shù)據(jù)訪問很多都是在一個(gè)類里面實(shí)現(xiàn)的。

為了搞明白分層的涵義,瀏覽了一些資料,把其中的一些摘錄如下:

一篇好文章:用MS.NET開發(fā)三層結(jié)構(gòu)應(yīng)用程序

1、推薦的實(shí)例:PetShop、Dowamish

2、

不用想得這么復(fù)雜,說白了,三層架構(gòu)就是
cs文件是其中一層
不在CS文件中直接操作數(shù)據(jù)庫,把所有操作數(shù)據(jù)庫的語句都寫成類,這個(gè)類文件又是其中一層,
SQL server的東西(如存儲(chǔ)過程等)又是一層

3、

依我認(rèn)為,這樣比較清晰,不必搞得這么復(fù)雜。
1、新建一個(gè)項(xiàng)目。
2、添加,新建項(xiàng)目,類庫。(需要多少層就建多少次)
在需要引用的地方加上using即可。

4、

“三層結(jié)構(gòu)”一詞中的“三層”是指:“外觀層”、“中間層”、“數(shù)據(jù)庫層”。其中:
      外觀層:位于最外層,直接呈現(xiàn)在用戶面前。用于顯示數(shù)據(jù),并為用戶提供一種交互式的界面。
      中間層:負(fù)責(zé)處理用戶輸入的信息,或者是將這些信息發(fā)送給數(shù)據(jù)庫層進(jìn)行保存,或者是調(diào)用數(shù)據(jù)庫層中的函數(shù)再次讀出這些數(shù)據(jù)。
      數(shù)據(jù)庫層:僅實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存和讀取操作。
通俗點(diǎn)說:一個(gè)“三層結(jié)構(gòu)”的Web應(yīng)用程序,就象是公司生產(chǎn)線。
      WebUI(Web User Interface Layer)就像是公司的經(jīng)理,他負(fù)責(zé)洞察市場(chǎng)趨勢(shì),決策產(chǎn)品的生產(chǎn)。并根據(jù)市場(chǎng)籌策下一步計(jì)劃。
      BLL(Business Logic Layer)就像是公司的管理員,他主要負(fù)責(zé)管理下層員工,傳達(dá)上級(jí)布置的生產(chǎn)任務(wù)給員工,并將生產(chǎn)結(jié)果反饋給上級(jí)Web。
      DA(Data Access Layer)就是公司里的工人,他們主要是負(fù)責(zé)產(chǎn)品的生產(chǎn)裝配工作,并將生產(chǎn)結(jié)果反饋給上級(jí)InterService。他們并不需要知道產(chǎn)品將銷往何處,也不用關(guān)心產(chǎn)品銷量。只要能完成任務(wù),就可以拿到報(bào)酬。

     那么我們假設(shè)有一段登錄代碼,則可以這樣處理Web程序,外觀層負(fù)責(zé)接收前臺(tái)頁面的數(shù)據(jù),然后傳給中間層,中間層對(duì)數(shù)據(jù)進(jìn)行處理,比如格式化,防SQL注入等等一些,這樣的數(shù)據(jù)再傳給數(shù)據(jù)訪問層然后與數(shù)據(jù)庫進(jìn)行操作,比如與數(shù)據(jù)庫的用戶名和密碼匹配等等一些代碼。

5、

http://community.csdn.net/Expert/topic/4294/4294668.xml?temp=.8061029

Web 層

Web 層為客戶端提供對(duì)應(yīng)用程序的訪問。這一層是作為 Duwamish.sln 解決方案文件中的 Web 項(xiàng)目實(shí)現(xiàn)的。Web 層由 ASP.NET Web 窗體和代碼隱藏文件組成。Web 窗體只是用 HTML 提供用戶操作,而代碼隱藏文件實(shí)現(xiàn)各種控件的事件處理。

業(yè)務(wù)外觀層

業(yè)務(wù)外觀層為 Web 層提供處理帳戶、類別瀏覽和購書的界面。這一層是作為 Duwamish.sln 解決方案文件中的 BusinessFacade 項(xiàng)目實(shí)現(xiàn)的。業(yè)務(wù)外觀層用作隔離層,它將用戶界面與各種業(yè)務(wù)功能的實(shí)現(xiàn)隔離開來。除了低級(jí)系統(tǒng)和支持功能之外,對(duì)數(shù)據(jù)庫服務(wù)器的所有調(diào)用都是通過此程序集進(jìn)行的。

業(yè)務(wù)規(guī)則層

業(yè)務(wù)規(guī)則層是作為 Duwamish.sln 解決方案文件中的 BusinessRules 項(xiàng)目實(shí)現(xiàn)的,它包含各種業(yè)務(wù)規(guī)則和邏輯的實(shí)現(xiàn)。業(yè)務(wù)規(guī)則完成如客戶帳戶和書籍訂單的驗(yàn)證這樣的任務(wù)。

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

數(shù)據(jù)訪問層為業(yè)務(wù)規(guī)則層提供數(shù)據(jù)服務(wù)。這一層是作為 Duwamish.sln 解決方案文件中的 DataAccess 項(xiàng)目實(shí)現(xiàn)的


代碼示例:

以下是兩種不同處理路徑的代碼示例:

獲取商品目錄

表示層調(diào)用業(yè)務(wù)外觀層:

productSystem = new ProductSystem();

categorySet = productSystem.GetCategories(categoryID);

業(yè)務(wù)外觀層直接調(diào)用數(shù)據(jù)層:

public CategoryData GetCategories(int categoryId)
{
if ( dsCommand == null )
{
throw new System.ObjectDisposedException( GetType().FullName );
}
return FillCategoryData("GetCategories", "@CategoryId", categoryId);
}

添加定單

表示層調(diào)用業(yè)務(wù)外觀層:

public void AddOrder()
{
ApplicationAssert.CheckCondition(cartOrderData != null, "Order requires data", ApplicationAssert.LineNumber);
ApplicationLog.WriteTrace("Duwamish7.Web.Cart.AddOrder:\r\nCustomerId: " +
cartOrderData.Tables[OrderData.CUSTOMER_TABLE].Rows[0][OrderData.PKID_FIELD].ToString());
cartOrderData = (new OrderSystem()).AddOrder(cartOrderData);
}

業(yè)務(wù)外觀層調(diào)用業(yè)務(wù)規(guī)則層:

public OrderData AddOrder(OrderData order)
{
ApplicationAssert.CheckCondition(order != null, "Order is required", ApplicationAssert.LineNumber);

(new BusinessRules.Order()).InsertOrder(order);
return order;
}

業(yè)務(wù)規(guī)則層調(diào)用數(shù)據(jù)層:

public bool InsertOrder(OrderData order)
{
//此處省略復(fù)雜的處理邏輯
if ( isValid )
{
using (DataAccess.Orders ordersDataAccess = new DataAccess.Orders())
{
return (ordersDataAccess.InsertOrderDetail(order)) > 0;
}
}
else
return false;
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多