午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    如何在ASP.NET中使用三層架構(gòu)
    來(lái)源:易賢網(wǎng) 閱讀:697 次 日期:2014-10-13 11:03:00
    溫馨提示:易賢網(wǎng)小編為您整理了“如何在ASP.NET中使用三層架構(gòu)”,方便廣大網(wǎng)友查閱!

    學(xué)ASP.NET都知道它的最經(jīng)典的架構(gòu)是三層架構(gòu),也是目前應(yīng)用得最廣泛的一種架構(gòu).以前說(shuō)起三層架構(gòu)大家都知道MVC架構(gòu),這是html開(kāi)發(fā)中用得比較多的,現(xiàn)在AJAX主要就是用這種架構(gòu)。大家ASP.NET的三層是指數(shù)據(jù)訪問(wèn)層,業(yè)務(wù)邏輯層和表示層,而且都知道數(shù)據(jù)訪問(wèn)層是用來(lái)訪問(wèn)數(shù)據(jù)的,業(yè)務(wù)邏輯層是用來(lái)處理一些系統(tǒng)的業(yè)務(wù)邏輯的,表示層就是把內(nèi)容呈現(xiàn)出來(lái)給用戶,與用戶進(jìn)行交互的。劃分三層的好處就是每一層都是獨(dú)立的,修改其中一層一般不會(huì)影響其他層的代碼,這樣就大大的方便了日后的維護(hù)和升級(jí)。它最大的缺點(diǎn)是架構(gòu)和編碼都比較復(fù)雜,而且對(duì)性能的提高沒(méi)有任何幫助,反而還可能會(huì)降低執(zhí)行效率。

    有時(shí)候真的覺(jué)得“三層”編起來(lái)挺麻煩的,在ASP.NET 2.0里,訪問(wèn)數(shù)據(jù)和顯示出來(lái)只要拖兩個(gè)控件就可以了(AccessDataSource/SQLDatasource和GridView),幾分鐘一個(gè)頁(yè)面就出來(lái)了,而且還具備了修改中,刪除,分頁(yè),排序等功能。而用三層架構(gòu)就麻煩多了,先要寫(xiě)數(shù)據(jù)訪問(wèn)層的代碼,接著寫(xiě)業(yè)務(wù)邏輯層的代碼(要調(diào)用數(shù)據(jù)層的方法),最后才是表示層,也就是頁(yè)面的設(shè)計(jì),還有調(diào)用業(yè)務(wù)邏輯層的代碼讀取數(shù)據(jù)。(注意:表示層是絕對(duì)不會(huì)訪問(wèn)數(shù)據(jù)層的內(nèi)容,只能通過(guò)業(yè)務(wù)層。業(yè)務(wù)層在這里是連接它們的橋梁。所以說(shuō)業(yè)務(wù)層是最重要的一層)既然這樣為什么還要用三層呢?前面提到的一層架構(gòu)的一個(gè)很大的問(wèn)題就是前臺(tái)和后臺(tái)代碼沒(méi)有很好的分開(kāi),不利于分工,第二,不利于日后的維護(hù)和升級(jí)。如果是個(gè)人主頁(yè)或者是一些一個(gè)人完成的小系統(tǒng)用一層還是挺方面的。如果是一些比較大的系統(tǒng),特別是企業(yè)級(jí)的應(yīng)用,就非用三層甚至n層不可了。一般三層就很夠了,再劃分更多只會(huì)增加設(shè)計(jì)和編碼的難度。

    那到底怎么去分層呢?怎么樣分層就符合三層架構(gòu)原則呢?這是很多剛?cè)腴T(mén)的人經(jīng)常問(wèn)的問(wèn)題。我翻了很多本案例書(shū),可惜很多都是一層或者是兩層架構(gòu)的,絕少三層的。后來(lái)研究了petshop4.0和下了一些國(guó)外的資料來(lái)看才開(kāi)始對(duì)如何分層有點(diǎn)了解。我總結(jié)了一下主要有以下三種分層方式:

    一:數(shù)據(jù)層不包含任何代碼,只有數(shù)據(jù)庫(kù),還有相關(guān)的存儲(chǔ)過(guò)程。

    這種模式下,數(shù)據(jù)層看起來(lái)就變得很簡(jiǎn)單了。只包含你建立的數(shù)據(jù)庫(kù),和一些存儲(chǔ)過(guò)程(注意是存儲(chǔ)過(guò)程)。其實(shí)這些存儲(chǔ)過(guò)程的建立也是相當(dāng)復(fù)雜的(我以后會(huì)專(zhuān)門(mén)寫(xiě)一篇這方面的文章),因?yàn)樗鼈兛梢酝瓿沙龜?shù)據(jù)訪問(wèn)外的其他一些很強(qiáng)大的功能,如分頁(yè),實(shí)現(xiàn)搜索算法等。數(shù)據(jù)訪問(wèn)的邏輯就都放在業(yè)務(wù)層,當(dāng)然業(yè)務(wù)層還包含其他一些邏輯代碼。我們來(lái)看一個(gè)示例,假設(shè)數(shù)據(jù)庫(kù)里有一個(gè)表BOOKS(書(shū)),建立一個(gè)存儲(chǔ)過(guò)程GetAllBooks,用來(lái)讀取書(shū)的信息,這樣在業(yè)務(wù)層里編一個(gè)方法GetBookS()和一個(gè)公用數(shù)據(jù)庫(kù)訪問(wèn)類(lèi),GetBooks()就通過(guò)數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)打開(kāi)連接,執(zhí)行在存儲(chǔ)過(guò)程,返回?cái)?shù)據(jù)(返回類(lèi)型可以是DataTable,DataSet,DataReader或者實(shí)體類(lèi))。業(yè)務(wù)層單獨(dú)編譯成一個(gè)或者幾個(gè)DLL文件。接著就是表示層了,表示層通過(guò)調(diào)用GetBookS()返回?cái)?shù)據(jù)綁定在相關(guān)的控件里。務(wù)層的方法都是在表示層調(diào)用。一般來(lái)說(shuō)book.aspx和book.aspx.cs都是表示層的內(nèi)容。所有前臺(tái)的設(shè)計(jì),相關(guān)控件,數(shù)據(jù)緩存都是屬于表示層。

    二:數(shù)據(jù)層還包含所有公共數(shù)據(jù)訪問(wèn)代碼。

    這種模式和前一種差別不大,主要是把數(shù)據(jù)訪問(wèn)代碼六到數(shù)據(jù)層。這樣可以很方面實(shí)現(xiàn)對(duì)多數(shù)據(jù)庫(kù)的支持。業(yè)務(wù)邏輯層直接調(diào)用數(shù)據(jù)層的相關(guān)訪問(wèn)數(shù)據(jù)的代碼,完全不必了解底層是什么數(shù)據(jù)庫(kù)。其他和前一種沒(méi)什么分別。

    三:所有數(shù)據(jù)讀取都放在數(shù)據(jù)層。

    這種模式下像前面所述的GetBooks()方法都是放在數(shù)據(jù)層,在業(yè)務(wù)層再定義一個(gè)GetBookS()方法以供表示層調(diào)用。這種模式下業(yè)務(wù)層不但不必了解底層是什么數(shù)據(jù)庫(kù),而且連數(shù)據(jù)庫(kù)的結(jié)構(gòu)都不必了解了。這可以說(shuō)是最標(biāo)準(zhǔn)的三層架構(gòu)了,在Microsoft的PetShop 4.0里就是用這種模式。

    以上就是我總結(jié)的一些內(nèi)容,可能不是很準(zhǔn)確,請(qǐng)大家多多指教。

    更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:如何在ASP.NET中使用三層架構(gòu)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

    2025國(guó)考·省考課程試聽(tīng)報(bào)名

    • 報(bào)班類(lèi)型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專(zhuān)用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
    咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)