silvermyth

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            1 隨筆 :: 12 文章 :: 1 評論 :: 0 Trackbacks
               設(shè)計一個架構(gòu),面臨的首要問題是如何進行分解,分解后的組件相互如何組織在一起。從這個意義上說,架構(gòu)有很多種,而最典型并且在企業(yè)中應(yīng)用最廣泛的非分層架構(gòu)莫屬了。分層架構(gòu)直觀來講就是一種“分層蛋糕”,每一層都依托在其下層之上,上層使用下層定義的各種服務(wù),而下層對上層一無所知。這方面的例子非常多,例如計算機本身分成硬件抽象層,操作系統(tǒng)層,系統(tǒng)軟件和應(yīng)用軟件層,互聯(lián)網(wǎng)ISO 7層架構(gòu)等等。這也印證了一句名言--“計算機中的任何問題都可以通過增加一個中間層來解決”。
              分層架構(gòu)具有很多優(yōu)勢:
          •     上層無需了解下層的實現(xiàn)細節(jié),每一層都是一個有機整機;例如無需了解以太網(wǎng)如何運行,你依然可以用TCP/IP協(xié)議來編寫FTP服務(wù)。這一點對于廣大技術(shù)人員尤其是程序員至關(guān)重要,否則我們每次編寫應(yīng)用的時候都既要知道硬件、又要了解操作系統(tǒng),還要懂編譯器
          •     下層可以實現(xiàn)透明的替換,只要替換前后提供相同的服務(wù)接口。例如FTP服務(wù)可以運行在PPP上,也可以運行在以太網(wǎng)上
          •     層次之間的依賴很小,例如只要TCP/IP協(xié)議不變,F(xiàn)TP服務(wù)就不變,無論數(shù)據(jù)鏈路和物理層發(fā)生怎樣的變化
          •     分層明確了了每層的功能和接口,有利于進行標準化
          •     下層可以為上層多個服務(wù)提供支持,只要服務(wù)遵循相同的調(diào)用接口
              分層架構(gòu)同時也有自身的缺陷,主要有以下兩點:
          •     層次不能封裝所有的東西,最典型的代表就是如果要在用戶界面顯示增加一個數(shù)據(jù)域,則數(shù)據(jù)庫中需要增加相應(yīng)的字段,并且業(yè)務(wù)層也需要做相應(yīng)的修改。
          •     過多的層次會加大調(diào)用開銷,從而影響性能。
              企業(yè)應(yīng)用架構(gòu)的演變經(jīng)過了以下幾個階段(主要是指單個應(yīng)用的架構(gòu)):
          •     兩層架構(gòu) - 以客戶機/服務(wù)器系統(tǒng)為代表,客戶端(胖客戶端)負責(zé)用戶界面和業(yè)務(wù)邏輯,服務(wù)器就是關(guān)系型數(shù)據(jù)庫。常見的工具有VB,PowerBuider等,一般來說這個階段業(yè)務(wù)比較簡單,主要就是數(shù)據(jù)庫的增刪改查,通過用戶界面上的SQL感知控件來連接和操作數(shù)據(jù)庫。
          •     三層架構(gòu) - 我認為也可以稱為四層架構(gòu)(如果算上數(shù)據(jù)庫),即表現(xiàn)層、領(lǐng)域?qū)雍蛿?shù)據(jù)源層。表現(xiàn)層用來處理與用戶的交互,可以是命令行、胖客戶端或者web界面;數(shù)據(jù)源層主要關(guān)注和其它系統(tǒng)的交互,如數(shù)據(jù)庫、消息系統(tǒng)、緩存或其它;領(lǐng)域?qū)又饕撠?zé)執(zhí)行領(lǐng)域邏輯,完成相關(guān)的計算。
              在本系列中,我們主要關(guān)注分層架構(gòu),至于后來出現(xiàn)的SOA和微服務(wù)架構(gòu),以及驅(qū)動這些架構(gòu)出現(xiàn)的原因,會在另外的文章中分析。
              另外,對于三層架構(gòu),我們需要注意以下幾點:
          •     三層架構(gòu)的每一層可以在垂直方向上進行再拆分,形成不同的軟件包,例如表現(xiàn)層分為命令行和web界面,數(shù)據(jù)源層分為數(shù)據(jù)庫、文件系統(tǒng)等
          •     在實際應(yīng)用中,下層對于不相鄰的上層并不是完全透明的,例如有時為了效率或其它考慮,可能會從表現(xiàn)層直接訪問數(shù)據(jù)源層
          •     分層架構(gòu)指的是邏輯上的分層,而從物理上來看,可以有多種部署架構(gòu)。例如Java中可以三層都放在同一個JVM(Tomcat)中;也可以把表現(xiàn)層放在Tomcat中,而業(yè)務(wù)邏輯放在JBoss EJB(另外一個JVM,甚至是不同的服務(wù)器)中。
          posted on 2017-03-31 23:31 Gavin Li 閱讀(120) 評論(0)  編輯  收藏 所屬分類: 架構(gòu)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 五原县| 石门县| 延吉市| 德化县| 彭泽县| 河间市| 南木林县| 南召县| 康马县| 凤城市| 鹤峰县| 湄潭县| 壤塘县| 佳木斯市| 城固县| 吐鲁番市| 武安市| 恭城| 岳普湖县| 两当县| 丰都县| 建宁县| 米泉市| 九龙坡区| 鹰潭市| 阿瓦提县| 巴南区| 栾城县| 天等县| 阿荣旗| 荆门市| 马龙县| 天门市| 区。| 绥化市| 丹棱县| 镇安县| 阿拉善右旗| 庆城县| 牙克石市| 卢湾区|