成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

趣談三層架構的演變

開發 后端
本篇文章通過養豬場的比喻,介紹了筆者對于三層架構的理解。將不同的功能代碼分散開來,更利于系統的設計和開發。

有關三層架構有很多理解。下面用養豬為比喻,介紹三層架構究竟是個什么東西。

層次結構在現實社會里隨處可見。記得有個笑話講有個村長得意地向他老婆吹牛:“全中國只有四個人比我官大,鄉長、縣長、省長和國務院總理”。這個笑話也體現了真實社會中分層的現象。社會人群會分層,公司人員結構也會分層,樓房是分層的,甚至做包子的籠屜都是分層的。雖然分層的目的各有不同,但都是為解決某一問題而產生的。所以,分層架構其實是為了解決某一問題而產生的一種解決方案。

14.1.1常用的三層架構設計

軟件系統最常用的一般會講到三層架構,其實就是將整個業務應用劃分為表示層、業務邏輯層、數據訪問層等,有的還要細一些,通過分解業務細節,將不同的功能代碼分散開來,更利于系統的設計和開發,同時為可能的變更提供了更小的單元,十分有利于系統的維護和擴展。

常見的三層架構基本包括如下幾個部分,如圖 14-1 所示。

常見的三層架構基本 

圖 14- 1常見的三層架構

◆數據訪問層 DAL :用于實現與數據庫的交互和訪問,從數據庫獲取數據或保存數據到數據庫的部分。

◆業務邏輯層 BLL :業務邏輯層承上啟下,用于對上下交互的數據進行邏輯處理,實現業務目標。

◆表示層 Web :主要實現和用戶的交互,接收用戶請求或返回用戶請求的數據結果的展現,而具體的數據處理則交給業務邏輯層和數據訪問層去處理。

日常開發的很多情況下為了復用一些共同的東西,會把一些各層都用的東西抽象出來。如我們將數據對象實體和方法分離,以便在多個層中傳遞, 例如稱為 Model 。一些共性的通用輔助類和工具方法,如數據校驗、緩存處理、加解密處理等,為了讓各個層之間復用,也單獨分離出來,作為獨立的模塊使用,例如稱為 Common 。

此時,三層架構會演變為如圖 14-2 所示的情況。

三層架構演變結果 

圖 14- 2三層架構演變結果


◆業務實體 Model : 用于封裝實體類數據結構,一般用于映射數據庫的數據表或視圖,用以描述業務中客觀存在的對象。 Model 分離出來是為了更好地解耦,為了更好地發揮分層的作用,更好地進行復用和擴展,增強靈活性。

◆通用類庫 Common :通用的輔助工具類。

在第 5.2 節中我們講過可以將對數據庫的共性操作抽象封裝成數據操作類(例如 DbHelperSQL ),以便更好地復用和使代碼簡潔。數據層底層使用通用數據庫操作類來訪問數據庫,最后完整的三層架構如圖 14-3 所示。

最后完整的三層架構

圖 14- 3最后完整的三層架構

數據庫訪問類 是對 ADO.NET 的封裝,封裝了一些常用的重復的數據庫操作。如微軟的企業庫 SQLHelper.cs ,動軟的 DBUtility/DbHelperSQL 等,為 DAL 提供訪問數據庫的輔助工具類。

通過以上分析,我們知道如今常用的三層架構是個什么樣子,同時,我們也知道了三層架構在使用過程中的一些演化過程。那么,為什么要這樣分層,每層結構到底又起什么作用呢?我們繼續往下看。

14.1.2趣味理解:三層架構與養豬

看新聞報道今年豬肉價格一路高漲,據說有人養豬都發財致富奔小康了,程序員都說寫代碼沒前途了,還不如去養豬,不過,可別認為養豬沒有技術含量,比寫代碼容易,其實養豬也大有學問。為了更好地理解三層架構,就拿養豬來做個例子吧。俗話說:“沒吃過豬肉,還沒見過豬跑啊!”。

圖 14-4 是三層架構化的養豬產業流水線趣味對此圖。

三層結構與養豬

圖 14-4三層結構與養豬

對比圖 14-3 與圖 14- 4 ,我們可以看出:

◆數據庫好比豬圈 ,所有的豬有序地按區域或編號,存放在不同的豬欄里。

◆DAL 好比是屠宰場 ,把豬從豬圈取出來進行(處理)屠殺,按要求取出相應的部位(字段),或者進行歸類整理(統計),形成整箱的豬肉(數據集),傳送給食品加工廠( BLL )。本來這里都是同一伙人既管抓豬,又管殺豬的,后來覺得效率太低了,就讓一部分人出來專管抓豬了( DBUtility ),根據要求來抓取指定的豬。

◆BLL 好比食品加工廠 ,將豬肉深加工成各種可以食用的食品(業務處理)。

◆Web 好比商場 ,將食品包裝成漂亮的可以銷售的產品,展現給顧客( UI 表現層)。

◆豬肉好比 Model ,無論是哪個廠(層),各個環節傳遞的本質都是豬肉,豬肉貫穿整個過程。

◆通用類庫 Common 相當于工人使用的各種工具,為各個廠(層)提供諸如殺豬刀、繩子、剪刀、包裝箱、工具車等共用的常用工具(類)。其實,每個部門本來是可以自己制作自己的工具的,但是那樣會使效率比較低,而且也不專業,并且很多工作都會是重復的。因此,就專門有人開了這樣的工廠來制作這些工具,提供給各個工廠,有了這樣的分工,工廠就可以專心做自己的事情了。

當然,這里只是形象的比喻,目的是為了讓大家更好地理解,實際的情況在細節上會有所不同。這個例子也只是說明了從豬圈到商場的單向過程,而實際三層開發中的數據交互是雙向的,可取可存。不過,據說有一種機器,把豬從這頭趕進去,另一頭就噗噗嚕嚕地出火腿腸了。如果火腿腸賣不了了,從那頭再放進去,這頭豬又原原本本出來了,科幻的機器吧,沒想到也可以和三層結構聯系上。以上只是笑談,不過也使三層架構的基本概念更容易理解了。

上面談了那么多,有人會問,我直接從數據庫取出內容直接操作不可以嗎?為什么要這么麻煩地用三層架構呢?三層架構到底有什么好處呢?

不分層,當然可以,就好比整個過程不分屠宰場、加工場之類的,都在同一個場所(工廠)完成所有的活(屠殺、加工、銷售)。但為什么要加工廠和商場呢?因為當規模比較大的時候,管理起來就會變得非常復雜,這樣的養殖方式已經無法滿足規模化的需要了。并且,從社會的發展來看,社會分工是人類進步的表現 。社會分工的優勢就是讓適合的人做自己擅長的事情,使平均社會勞動時間大大縮短,生產效率顯著提高。能夠提供優質高效勞動產品的人才能在市場競爭中獲得高利潤和高價值。人盡其才,物盡其用最深刻的含義就是由社會分工得出的。軟件開發也一樣,做小項目的時候,分不分層確實看不出什么差別,并且顯得更麻煩啰嗦了。但當項目變大和變復雜時,分層就顯示出它的優勢來了。所以分不分層要根據項目的實際情況而定,不能一概而論。

【編輯推薦】

  1. 如何將ViewState持久化
  2. 常用Web Service匯總(天氣預報、時刻表等)
  3. .NET操作Word的實現:using Word
  4. ASP.NET新手問題總結
  5. 深入研究Repeater控件:最大的靈活性
責任編輯:yangsai 來源: CSDN論壇
相關推薦

2011-04-19 13:53:41

三層架構

2019-05-16 09:51:40

數據中心架構云計算

2009-07-28 17:25:14

ASP.NET三層結構

2013-01-09 11:00:20

架構開發三層架構.NET架構

2010-01-15 10:33:28

三層交換技術演變

2018-03-08 15:30:31

超融合架構傳統三層架構

2011-08-08 14:14:03

架構

2009-05-06 09:40:04

LINQWEB開發構架

2012-02-03 09:44:33

.NET

2015-07-02 10:57:11

General框架架構開發

2018-10-31 14:32:53

數據中心網絡架構

2009-07-28 15:08:50

MVC三層架構實例

2009-04-30 15:56:50

三層架構MVCMVP

2011-05-12 14:24:14

三層架構

2009-07-28 17:18:33

2012-07-16 10:19:02

MongoDB

2012-02-07 10:40:13

MVCJava

2014-02-12 10:07:07

三層交換原理

2022-08-30 09:57:28

項目傳統對象訪問

2015-05-25 15:15:53

浪潮
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美午夜精品 | 久久人 | 国产精品一区二区三区四区五区 | 午夜寂寞福利视频 | 人人干人人超 | 亚洲欧美在线观看 | 涩涩视频网站在线观看 | 91亚洲欧美 | 日本在线网址 | 最新日韩在线视频 | 久久精品亚洲精品国产欧美 | 色接久久 | 欧美在线免费 | 亚洲国产一区二区三区 | 国产精品久久久久久久久图文区 | 97久久精品午夜一区二区 | 亚洲精品在线观看网站 | 亚洲精品久久久久久久不卡四虎 | 亚洲福利一区 | 欧美日韩精品免费 | 最新日韩在线视频 | 精品一区久久 | 少妇诱惑av | 最新毛片网站 | 欧美乱码精品一区二区三区 | 国产精品精品视频一区二区三区 | 亚洲精品av在线 | 久久天天综合 | 亚洲高清视频在线观看 | 免费视频一区二区 | 一区二区三区免费在线观看 | 午夜激情一区 | 日韩精品一区二区三区在线观看 | 精品国产一区二区三区性色av | 国产一区二区三区免费 | 欧美国产精品一区二区三区 | 国产精品久久久久一区二区三区 | 亚洲首页 | 亚洲在线成人 | 久久福利电影 | 亚洲性网 |