1. 程式人生 > >深入探討:如何理解.Net的三層架構

深入探討:如何理解.Net的三層架構

三層體系結構的概念

  1. 使用者介面表示層(USL)
  2. 業務邏輯層(BLL)
  3. 資料訪問層(DAL)

http://images.cnblogs.com/cnblogs_com/reeezak/aspnet_tutorial/02/aspnet_tutorial02_BusinessLogicLayer_cs_figure01.gif
圖一:BLL將USL與DAL隔開了,並且加入了業務規則

  • 各層的作用
  • 1:資料資料訪問層:主要是對原始資料(資料庫或者文字檔案等存放資料的形式)的操作層,而不是指原始資料,也就是說,是對資料的操作,而不是資料庫,具體為業務邏輯層或表示層提供資料服務.

    2:業務邏輯層:主要是針對具體的問題的操作,也可以理解成對資料層的操作,對資料業務邏輯處理,如果說資料層是積木,那邏輯層就是對這些積木的搭建。

    3:表示層:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表現成:aspx, 如果邏輯層相當強大和完善,無論表現層如何定義和更改,邏輯層都能完善地提供服務。
  • 具體的區分方法

    1:資料資料訪問層:主要看你的資料層裡面有沒有包含邏輯處理,實際上他的各個函式主要完成各個對資料檔案的操作。而不必管其他操作。

    2:業務邏輯層:主要負責對資料層的操作。也就是說把一些資料層的操作進行組合。

    3:表示層:主要對使用者的請求接受,以及資料的返回,為客戶端提供應用程式的訪問。
  • 三層結構解釋

    所謂三層體系結構,是在客戶端與資料庫之間加入了一個中間層,也叫元件層。這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構,也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置到一臺機器上。 三層體系的應用程式將業務規則、資料訪問、合法性校驗等工作放到了中間層進行處理。通常情況下,客戶端不直接與資料庫進行互動,而是通過COM/DCOM通訊與中間層建立連線,再經由中間層與資料庫進行交換.

    開發人員可以將應用的商業邏輯放在中間層應用伺服器上,把應用的業務邏輯與使用者介面分開。在保證客戶端功能的前提下,為使用者提供一個簡潔的介面。這意味著如果需要修改應用程式程式碼,只需要對中間層應用伺服器進行修改,而不用修改成千上萬的客戶端應用程式。從而使開發人員可以專注於應用系統核心業務邏輯的分析、設計和開發,簡化了應用系統的開發、更新和升級工作。
  • 那麼為什麼要應用“中間業務層”呢?舉些例子:
         我們假設有一段登入程式碼,則可以這樣處理Web程式,外觀層負責接收前臺頁面的資料,然後傳給中間層,中間層對資料進行處理,比如格式化,防SQL注入等等一些,這樣的資料再傳給資料訪問層然後與資料庫進行操作,比如與資料庫的使用者名稱和密碼匹配等等一些程式碼。
  • “中間業務層”的用途有很多,例如:驗證使用者輸入資料、快取從資料庫中讀取的資料等等……但是,“中間業務層”的實際目的是將“資料訪問層”的最基礎的儲存邏輯組合起來,形成一種業務規則。例如:“在一個購物網站中有這樣的一個規則:在該網站第一次購物的使用者,系統為其自動註冊”。這樣的業務邏輯放在中間層最合適:

在“資料訪問層”中,最好不要出現任何“業務邏輯”!也就是說,要保證“資料訪問層”的中的函式功能的原子性!即最小性和不可再分。“資料訪問層”只管負責儲存或讀取資料就可以了。

  • ASP.NET中的三層結構說明

    完善的三層結構的要求是:修改表現層而不用修改邏輯層,修改邏輯層而不用修改資料層。否則你的應用是不是多層結構,或者說是層結構的劃分和組織上是不是有問題就很難說.不同的應用有不同的理解,這只是一個概念的問題.
  • 理解ASP.NET中的三層結構——為什麼要分三層?

    我們用三層結構主要是使專案結構更清楚,分工更明確,有利於後期的維護和升級。它未必會提升效能,因為當子程式模組未執行結束時,主程式模組只能處於等待狀態。這說明將應用程式劃分層次,會帶來其執行速度上的一些損失。但從團隊開發效率角度上來講卻可以感受到大不相同的效果。


    需要說明一下,三層結構不是.NET的專利,也不是專門用在資料庫上的技術。它是一種更加普適的架構設計理念。
此種架構要在資料庫設計上注意表之間的關係,盡力滿足主與子的關係。在功能上對使用者要有一定的限制,不要表現在對於子表的刪除操作一定要慎重,以免造成主表與子表的資料在邏輯上出現的主表的外來鍵在子表中沒有相對應的值。
  • 對於表的綜合查詢方法是:
    先對主表查詢,呼叫主表所對應的DL。再根據主表的記錄分別對每一個子表進行查詢。將自表的查詢結果新增的主表後,形成一個大的查詢集合。
    對於表的操作(增刪改):
    此時只對主表進行操作,呼叫主表對應的DL中的操作方法。
    RL層是邏輯判斷層,主要是對頁面上傳入的資料進行邏輯判斷。RL層之上就是UI

  • 如何建立一個三層體系結構解決方案

    新建一個空白解決方案。然後:     
    “新增”-“新建專案”-“其他專案”-“企業級模版專案”-“C#生成塊”-“資料訪問”(資料層,下簡稱D層)     
    “新增”-“新建專案”-“其他專案”-“企業級模版專案”-“C#生成塊”-“業務規則”(業務層,下簡稱C層)     
    “新增”-“新建專案”-“其他專案”-“企業級模版專案”-“C#生成塊”-“Web使用者介面”(介面層,下簡稱U層)     
    右鍵點“解決方案”-“專案依賴項”,設定U依賴於D、C,C依賴於D。     
    對U新增引用D、C,對C新增引用D。     
    到此為止,一個三層的架子建立起來了。我上面說的很具體很“傻瓜”,知道的人覺得我廢話,其實我這段時間很強烈的感覺到非常多的人其實對這個簡單的過程完全不瞭解。雖然不反對建2個“空專案”和1個“Asp    net    Web應用程式專案”也可以作為3層的框架,而且相當多的人認為其實這些“企業級模板專案”其實就是個空專案,這是一個誤區。沒錯,企業級模板專案你從解決方案資源管理器裡看它是個什麼也沒有的,但是你可以用記事本開啟專案檔案,看見不同了吧??有些東西在背後,你是看不見的,不過系統已經做好了。也就是說,如果你在C層裡的某個類裡“using    System    Data    SqlClineit”,或者使用一個SqlConnection物件,編譯時候不會出錯,但是會在“任務列表”裡生成一些“策略警告”,警告你在C層裡不要放應該放在D層的東西(雖然就程式來說沒錯,但是可讀性可維護性就打了折扣)而這種功能,空專案是無法給你的。
  • 在新TraceLWord3中,應用了“企業級模板專案”。把原來的LWordTask.cs,並放置到一個單一的專案裡,專案名稱為:AccessTask。解決方案中又新建了一個名稱為:InterService的專案,該專案中包含一個LWordService.cs程式檔案,它便是“中間業務層”程式。為了不重複命名,TraceLWord3的網站被放置到了WebUI專案中。更完整的程式碼,可以在CodePackage/TraceLWord3目錄中找到——

  • 面象物件與實際的結合

  • 我們知道建橋需要磚塊,應該是先準備好磚再來建橋,不過為了講解上的順序性和連貫性,簡單性。我們先建橋,建的過程中需要磚塊再現做,這樣就不會多出來“橋不需要的東西”。注意在實際中,還是應該先準備磚塊。      
    U層其實就是橋,C層是磚塊,D層是原料(石頭、沙子)。這也解釋前面為什麼U層要引用、依賴D層(而不是U對C,C對D的層次),因為橋除了需要磚頭,其實也需要石頭沙子。
  • “三層結構”的缺點
  • 有些網友在讀完這篇文章前作之後,對我提出了一些質疑,這提醒我文章至此還沒有提及“三層結構”的缺點。“三層結構”這個詞眼似乎一直都很熱門,究其原因,或許是這種開發模式應用的比較普遍。但是“三層結構”卻並不是百試百靈的“萬靈藥”,它也存在著缺點。下面就來說說它的缺點……

    “三層結構”開發模式的一個非常明顯的缺點就是其執行速度不夠快。當然這個“執行速度”是相對於非分層的應用程式來說的。從文中所給出的時序圖來看,也明顯的暴露了這一缺點。TraceLWord1和TraceLWord2沒有分層,直接呼叫的ADO.NET所提供的類來獲取資料。但是,TraceLWord6確要經過多次呼叫才能獲取到資料。在子程式模組程式沒有返回時,主程式模組只能處於等待狀態。所以在執行速度上,留言板的版本越高,排名卻越靠後。“三層結構”開發模式,不適用於對執行速度要求過於苛刻的系統,例如:線上訂票,線上炒股等等……它比較擅長於商業規則容易變化的系統。

    “三層結構”開發模式,入門難度夠高,難於理解和學習。這是對於初學程式設計的人來說的。以這種模式開發出來的軟體,程式碼量通常要稍稍多一些。這往往會令初學者淹沒在茫茫的程式碼之中。望之生畏,對其產生反感,也是可以理解的……

    其實,無論哪一種開發模式或方法,都是有利有弊的。不會存在一種“萬用法”可以解決任何問題。所以“三層結構”這個詞眼也不會是個例外!是否採用這個模式進行系統開發,要作出比較、權衡之後才可以。切忌濫用!

  • 參與資料
  1. petshop 4.0的體系結構(只是稍微看了一下,瞭解一下結構)

    簡介:PetShop隨著版本的不斷更新,至現在基於.Net 2.0的PetShop4.0為止,整個設計逐漸變得成熟而優雅,而且有很多可以借鑑之處。PetShop是一個小型的專案,系統架構與程式碼都比較簡單,卻也凸現了許多頗有價值的設計與開發理念。 PetShop架構設計
    三層”應用結構:資料訪問層、業務邏輯層(領域層)、表示層
    分層的設計的特點:
    結構清晰、耦合度低
    便於系統的擴充套件
    利於開發任務同步進行
    降低了一定的效能
    .Net    PetShop    4.0    配置檔案屬性管理 http://blog.csdn.net/fengfangfang/archive/2006/09/07/1189061.aspx       

    .Net    PetShop    4.0    快取處理       
    http://blog.csdn.net/fengfangfang/archive/2006/09/06/1185077.aspx       

    .Net    PetShop    4.0    訊息處理       
    http://blog.csdn.net/fengfangfang/archive/2006/09/08/1194896.aspx       

    每個功能都使用了工廠模式

相關推薦

ASP.NET 架構技術 人力資源管理系統專案HR (深入WebServic

白菜價, 想要的聯絡QQ:867635458,非誠勿擾! ASP.NET MVC Linq 技術  企業級通用OA系統  全程開發  大型企業級別OA專案實戰全新上線啦!本專案由小孔子講師全程錄製。小孔子老師大家都很熟悉了,他所錄製的其他課程都受到了學員的一致好

.net架構開發步驟

City城市表,id ,name,password,address,phone; 1.新建一個windows窗體應用程式,CitySys 2.檔案–》新增–》新建專案–》類庫(CitySysModel)–》重新命名class1.cs的類(CityModel)。 3.根據資料表裡面的欄位,

.NET架構

零基礎學C#3.0 -- .net的三層架構 - CodingPenguin 時間 2014-01-26 17:40:00 部落格園-所有隨筆區 原文  http://www.cnblogs.com/codingpenguin/p/3534304.html 主題 .N

VS2010構建ASP.NET架構例項演示(一)

開發環境:vs2010+SQLSERVER2008 功能:簡單實現顯示一張表的記錄。 具體步驟:       1、開啟sql server2008,在裡面建立資料庫名為halfcool,然後在資料庫建立users表,裡面有三個欄位id(自動增加),username(

VS2010構建ASP.NET架構例項演示(

8、業務層(Bll),針對具體問題的操作,也可以說是對資料層的操作,對資料業務邏輯處理。 建立的方法同上。名稱為Bll;解決方案:新增到解決方案;路徑為e:\test\Solution1;然後將Bll目錄下面的class1.cs改名為UserBll.cs了。這層要引用Da

【ASP.NET開發】.NET架構簡單解析

這篇文章本來應該很早就寫出來的,但是一直苦於自己的精神能力有限,而且已經到了我們學校的考試周,所以時間上還是有點緊迫。關鍵的一點就是,找不到合理的思路來寫,思路沒有的話,就算是再好的素材,也寫不來大家喜歡的文章。 之前已經寫過關於.NET三層架的兩篇文章了,一篇是《【ASP

asp.net架構詳解

一、資料庫 /*==============================================================*/ /* DBMS name:      Microsoft SQL Server 2000         

.NET 架構

Connection : 用於連線資料庫命令. Command : 執行鍼對資料庫的SQL命令. ExecuteScalar() : 返回第一行第一列的值(object型別). ExecuteNonQuery() : 返回執行命令後受到影響的行數(int型別). ExecuteReade

asp.net架構連線Oracle 11g詳解

asp.net三層架構連線Oracle 11g 連線Oracle時使用微軟的Oracle連線元件; 一 DAL層 using System; using System.Collections.Generic; using System.Text; using System

.net架構(3-tier application)

      做一般網站用三層架構似乎麻煩些,要考慮基層呢,用自動生成程式碼工具的話可以考慮使用。下面引用別人的對三層架構解釋。       三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、資

Java自學之路-Java中級教程-12SpringMVC的架構模型、表現、控制

MVC即Model、View、Controller三者的縮寫。Model為模型層,View為表現層,Controller為控制層。其中M處於最底層,V在最上層,中間層為Controller。比如使用者訪問網站,首先接觸的是View,即是網頁。通過訪問網頁的url,就會傳到Co

.net 架構的認識

     所謂三層架構,是在客戶端與資料庫之間加入了一個“中間層”,也叫元件層。 這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構, 也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置到一臺機器上。     在專案

深入探討如何理解.Net架構

三層體系結構的概念使用者介面表示層(USL) 業務邏輯層(BLL) 資料訪問層(DAL) 圖一:BLL將USL與DAL隔開了,並且加入了業務規則 各層的作用 1:資料資料訪問層:主要是對原始資料(資料庫或者文字檔案等存放資料的形式)的操作層,而不是指原始資料,也就是

如何理解.Net架構

各層的作用 1:資料資料訪問層:主要是對原始資料(資料庫或者文字檔案等存放資料的形式)的操作層,而不是指原始資料,也就是說,是對資料的操作,而不是資料庫,具體為業務邏輯層或表示層提供資料服務.2:業務邏輯層:主要是針對具體的問題的操作,也可以理解成對資料層的操作,對資料業務邏

.NET MVC與架構

增刪改查 ews 數據的操作 求反 註意 image http pla 業務 雖然接觸了兩者有一段時間了,但是有時還是會混淆概念,在此處不打算說明二者的區別,因為二者都是架構模式,並且也有一定的共存度,在實際開發中,嚴格區分意義不大。基於最近涉及到這部分知識就在復習下,編程

MVC和架構的個人理解

mod bll 得到 www 中間 物理 交互 .cn fonts 一直以為MVC就是三層,最近通過.net的學習才知道,三層架構是指表示層(UI),業務邏輯層(BLL)和數據訪問層(DAL) ,UI負責與用戶的交互,DAL負責訪問數據(其實是操作model,model對應

架構初步理解

三層 asp net 機房 常用 業務 通信 AS 分層 ---恢復內容開始--- 什麽是三層架構:通常意義上的三層架構就是顯示層(UI),業務邏輯層(BLL),數據訪問層(DAL)。 UI:顯示層,用來采集用戶用戶輸入輸入的信息和操作,並向用戶展現特定的業務數據,在UI層

架構理解

hibernate 分離 不同 css ava ber servle 服務 邏輯結構 三層架構的理解 表現層: v:html/css/jsp/struts2 c:servlet/struts2action m:javabean/bean(例如:UserService)

asp.net mvc 加架構 完美搭配

第二章 幫助 summary 本地數據庫 asp 存在 remoting new org http://www.hysql.org/aspnet/20180630/5712.html 先來一張項目的層級結構圖: Model:模型層,主要是各種類型、枚舉以及ORM框

什麽是架構?你真的理解分層的意義嗎?

靜下心來 感到 面向過程 基於 用不了 加班 str transacti context 首先聲明,本文並不是介紹什麽是N層架構,然後給張分層圖,最後來一堆代碼結束。本文主要是對分層過程中常常讓人感到困惑地方的思考,從個人經驗角度出發,努力嘗試來解決這些困惑,歡迎拍磚!開始