• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于三層架構(gòu)的軟件體系設(shè)計(jì)與應(yīng)用

      2017-05-10 19:27周健
      電子技術(shù)與軟件工程 2017年8期
      關(guān)鍵詞:表示層插件架構(gòu)

      周健

      摘 要

      本文首先通過總結(jié)三層架構(gòu)體的實(shí)踐經(jīng)驗(yàn),介紹了在人們熟知的表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲(chǔ)層這種縱向分層基礎(chǔ)上更進(jìn)一步的內(nèi)部七層詳細(xì)劃分;又以松耦合組件的實(shí)現(xiàn)為重點(diǎn),介紹了利用插件技術(shù)和AOP方法對(duì)三層結(jié)構(gòu)在軟件體系橫向上的分解方法及應(yīng)用要點(diǎn);最后介紹了三層結(jié)構(gòu)按地域分布時(shí)的應(yīng)用實(shí)踐。

      【關(guān)鍵詞】三層架構(gòu) 軟件體系 插件技術(shù) 地域分布

      隨著軟件工程研究與應(yīng)用的不斷進(jìn)步,軟件開發(fā)規(guī)范以及面向?qū)ο缶幊趟枷氲玫搅瞬粩嗌钊氲膽?yīng)用,人們對(duì)軟件可維護(hù)性和可重用性的要求不斷提高,使得傳統(tǒng)的二層架構(gòu)系統(tǒng)愈加顯得不能適應(yīng)軟件開發(fā)需要,由此在用戶界面層與數(shù)據(jù)庫層之間增加一個(gè)“中間層”的三層軟件架構(gòu)體系應(yīng)運(yùn)而生。這里所說的三層體系,不是指服務(wù)器物理設(shè)備上的三層配置,也不僅僅有B/S應(yīng)用才有三層體系結(jié)構(gòu),三層是指軟件系統(tǒng)在應(yīng)用邏輯設(shè)計(jì)上的三層。通過引入中間層,將復(fù)雜的商業(yè)邏輯從傳統(tǒng)的二層結(jié)構(gòu)(Client-Server)應(yīng)用模型中分離出來,并提供了便于擴(kuò)充、易于訪問、易于管理的設(shè)計(jì)思想和方法,通過將多種應(yīng)用服務(wù)分別封裝部署于應(yīng)用服務(wù)器來增強(qiáng)了應(yīng)用程序的可維護(hù)性和可重用性,使用戶在管理上所花費(fèi)的時(shí)間最小化,從而實(shí)現(xiàn)了安全、穩(wěn)定和高效的系統(tǒng)應(yīng)用。

      1 軟件的三層架構(gòu)體系

      三層架構(gòu)體系已經(jīng)成為軟件設(shè)計(jì)領(lǐng)域的基本結(jié)構(gòu),雖說關(guān)于三層架構(gòu)目前已經(jīng)有多種不同的描述定義,但在實(shí)際應(yīng)用中它的基本思想都是通過在界面應(yīng)用層和數(shù)據(jù)訪問層之間增加一個(gè)用來銜接兩者之間的業(yè)務(wù)邏輯層,借此來實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)中“高內(nèi)聚低耦合”的效果,從而達(dá)到為系統(tǒng)的擴(kuò)充和維護(hù)創(chuàng)造更多便利條件的目的。我們?cè)趹?yīng)用中以微軟DNA架構(gòu)定義為基礎(chǔ),并且根據(jù)實(shí)踐中的體會(huì)對(duì)各層的內(nèi)部進(jìn)行了進(jìn)一步的細(xì)劃,形成了如圖1所示軟件的實(shí)用型的三層架構(gòu)體系。

      1.1 表示層

      表示層的功能就是用于接收用戶輸入的數(shù)據(jù)和顯示經(jīng)過系統(tǒng)處理后用戶所需要的數(shù)據(jù),這一環(huán)節(jié)在應(yīng)用中可以再劃分為兩部分,其中的界面外觀層用來實(shí)現(xiàn)系統(tǒng)用戶界面的設(shè)計(jì)需求;而界面規(guī)則層是通過界面外觀層接收的用戶指令來調(diào)用業(yè)務(wù)接口層相應(yīng)的接口,并將界面輸入的業(yè)務(wù)數(shù)據(jù)傳送給業(yè)務(wù)邏輯層。

      1.2 業(yè)務(wù)邏輯層

      業(yè)務(wù)邏輯層也就是系統(tǒng)的“中間件”,它在系統(tǒng)中發(fā)揮著表示層與數(shù)據(jù)存儲(chǔ)層兩者之間的聯(lián)結(jié)作用,在系統(tǒng)運(yùn)行中承擔(dān)著數(shù)據(jù)校驗(yàn)、計(jì)算處理和業(yè)務(wù)規(guī)則實(shí)現(xiàn)等業(yè)務(wù)邏輯處理功能,對(duì)于輸入的數(shù)據(jù)經(jīng)過加工后保存到數(shù)據(jù)存儲(chǔ)層,而對(duì)于用戶從數(shù)據(jù)存儲(chǔ)層中檢索提取的數(shù)據(jù)返回給表示層。在具體實(shí)施時(shí)又可以細(xì)分業(yè)務(wù)接口層,利用它來接收表示層用所提供的指令接口,并將指令操作結(jié)果再返回給表示層;業(yè)務(wù)規(guī)則層,則是用來接受用戶指令,并將該指令根據(jù)需要?jiǎng)澐纸o不同的構(gòu)造器進(jìn)行處理,并構(gòu)造出所對(duì)應(yīng)的實(shí)體;實(shí)體層則是對(duì)數(shù)據(jù)庫對(duì)象的抽象,常見的有表、視圖、觸發(fā)器和存儲(chǔ)過程等;數(shù)據(jù)訪問層具體用來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的連接、查詢、插入、更新和刪除等操作。

      1.3 數(shù)據(jù)存儲(chǔ)層

      數(shù)據(jù)存儲(chǔ)層就是系統(tǒng)中的數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)倉庫系統(tǒng),其中包含了表、視圖、觸發(fā)器和存儲(chǔ)過程等數(shù)據(jù)庫對(duì)象。

      2 三層結(jié)構(gòu)+插件的應(yīng)用特點(diǎn)

      通常所說的三層架構(gòu)是對(duì)軟件系統(tǒng)進(jìn)行“縱向”分層,而三層架構(gòu)在實(shí)際應(yīng)用中經(jīng)常會(huì)形成圖2所示帶有插件的三層架構(gòu),它是在三層架構(gòu)基礎(chǔ)上利用各層上所添加的Addin“插件”對(duì)軟件系統(tǒng)進(jìn)行了“橫向”的分解,這種以縱向分層為基礎(chǔ),以橫向分解為擴(kuò)展的軟件架構(gòu)體系整體上可以被看作是一個(gè)“網(wǎng)格”形結(jié)構(gòu)。其中的某些網(wǎng)格可以看作是軟件系統(tǒng)的“擴(kuò)展點(diǎn)”,我們可以利用這些擴(kuò)展點(diǎn)來掛接“插件”,這樣就可以在三層架構(gòu)的每個(gè)內(nèi)部層級(jí)上通過掛接適當(dāng)?shù)牟寮硗瓿稍搶拥囊恍┕δ?,從而?shí)現(xiàn)了一個(gè)軟件系統(tǒng)與外接應(yīng)用程序的“熱插拔”式擴(kuò)展,也就是說可以在少影響甚至不影響系統(tǒng)服務(wù)的情況下,動(dòng)態(tài)的實(shí)現(xiàn)有關(guān)插件的加載、移除或更新等操作,通過采用這種插件技術(shù)可以實(shí)現(xiàn)以下功能:

      (1)對(duì)于表示層,可以動(dòng)態(tài)地對(duì)某些用戶界面進(jìn)行更新替換,或?qū)π略龅挠脩艚缑婺K進(jìn)行加載;在業(yè)務(wù)邏輯層,可以動(dòng)態(tài)地某項(xiàng)業(yè)務(wù)服務(wù)模塊進(jìn)行加載、替換或者刪除;在數(shù)據(jù)訪問層,通過使用插件技術(shù)我們可以動(dòng)態(tài)地添加對(duì)新的數(shù)據(jù)庫類型的支持。這些功能模塊的加載、替換或者刪除都是在系統(tǒng)整體架構(gòu)保持穩(wěn)定的基礎(chǔ)上,在運(yùn)行時(shí)就可以實(shí)現(xiàn)的。這種插件的“熱插拔”功能使得一個(gè)應(yīng)用系統(tǒng)的可擴(kuò)展性得到了極大的提高。

      (2)在需要進(jìn)行系統(tǒng)升級(jí)時(shí),大多可以通過升級(jí)某個(gè)層級(jí)的插件就可以實(shí)現(xiàn)了,還可以做到在系統(tǒng)服務(wù)整體不間斷的情況下進(jìn)行插件的動(dòng)態(tài)升級(jí)。

      (3)為了實(shí)現(xiàn)系統(tǒng)的“三層架構(gòu)+插件”結(jié)構(gòu),在系統(tǒng)設(shè)計(jì)時(shí)就需要對(duì)系統(tǒng)內(nèi)部各層進(jìn)行“松耦合”的設(shè)計(jì),只有滿足松耦合要求的組件才可以被做成“插件”。為了更好的實(shí)現(xiàn)松耦合的組件設(shè)計(jì),在架構(gòu)模型中可以采用面向切面編程AOP(Aspect Oriented Programmingg)框架進(jìn)行函數(shù)式編程,采用AOP技術(shù)的主要作用是可以實(shí)現(xiàn)對(duì)某些業(yè)務(wù)邏輯的橫向關(guān)鍵點(diǎn)的隔離,從實(shí)現(xiàn)了系統(tǒng)中業(yè)務(wù)邏輯各個(gè)部分之間的“低耦合”設(shè)計(jì),提高了程序的可重用性,自然也就提高了開發(fā)的效率。

      3 按地域分布的三層結(jié)構(gòu)應(yīng)用特點(diǎn)

      對(duì)于各類跨地域分布的應(yīng)用系統(tǒng),可以設(shè)計(jì)為圖3所示的按地域分布的架構(gòu),形成一種基于地理位置的服務(wù)。地域分布的架構(gòu)是在上述的三層架構(gòu)和“三層+插件”架構(gòu)基礎(chǔ)上按應(yīng)用需求的地域分布式服務(wù)體系。它的應(yīng)用特點(diǎn)如下:

      3.1 跨地域分布的服務(wù)需求案例

      假設(shè)某一系統(tǒng)需要為全國的多個(gè)城市提供業(yè)務(wù)功能服務(wù),每個(gè)城市的客戶量很大,而且每個(gè)城市訪問的數(shù)據(jù)需求可能是不一樣的,訪問的功能模塊也各不相同。某客戶除了需要向該系統(tǒng)請(qǐng)求服務(wù)之外,還會(huì)通過該系統(tǒng)與其它客戶進(jìn)行即時(shí)通信,而這兩個(gè)客戶可以是在同一個(gè)城市,也可能位于不同的城市。

      3.2 按地域分布式架構(gòu)的應(yīng)用要點(diǎn)

      首先,地域分布式架構(gòu)將用戶管理和業(yè)務(wù)功能服務(wù)分開,通過分別構(gòu)建應(yīng)用服務(wù)器和功能服務(wù)器來實(shí)現(xiàn)不同的服務(wù),然后將它們部署到不同的系統(tǒng)節(jié)點(diǎn)上。應(yīng)用服務(wù)器和功能服務(wù)器都是以三層架構(gòu)為基礎(chǔ),采用了“三層架構(gòu)+插件”架構(gòu)的架構(gòu)。比如,對(duì)于北京這一地域,系統(tǒng)可以部署一臺(tái)應(yīng)用服務(wù)器和一臺(tái)功能服務(wù)器,客戶可以通過客戶端來訪問應(yīng)用服務(wù)器實(shí)現(xiàn)服務(wù)請(qǐng)求。假設(shè)有一天上海地區(qū)的客戶量大幅度增加,因?yàn)橄到y(tǒng)中的業(yè)務(wù)計(jì)算處理都是在功能服務(wù)器上完成的,由此會(huì)導(dǎo)致功能服務(wù)器的訪問壓力劇增。在這種局面下,按地域分布式架構(gòu)將允許系統(tǒng)在不停止任何服務(wù)的情況下,動(dòng)態(tài)的加載新增的功能服務(wù)器,新添加的功能服務(wù)器能夠自動(dòng)注冊(cè)到應(yīng)用服務(wù)器。系統(tǒng)中的應(yīng)用服務(wù)器可以監(jiān)控每個(gè)功能服務(wù)器的負(fù)載情況,每當(dāng)有客戶端請(qǐng)求到來時(shí),應(yīng)用服務(wù)器會(huì)將請(qǐng)求交給負(fù)載最低的功能服務(wù)器進(jìn)行處理,這就實(shí)現(xiàn)了功能服務(wù)器的負(fù)載均衡。地域分布式架構(gòu)還可以通過配置跨區(qū)域應(yīng)用服務(wù)器來解決應(yīng)用服務(wù)器之間的通信問題。所有應(yīng)用服務(wù)器在啟動(dòng)的時(shí)候,將自動(dòng)向跨區(qū)域應(yīng)用服務(wù)器進(jìn)行注冊(cè),這樣就可以融入到整個(gè)地域分布式架構(gòu)體系中。

      4 結(jié)束語

      研究軟件系統(tǒng)三層架構(gòu)的主要目的就是為開發(fā)人員進(jìn)行系統(tǒng)的開發(fā)、部署、維護(hù)而服務(wù)的。在系統(tǒng)的開發(fā)中通過中間層的劃分,實(shí)現(xiàn)了表示層和數(shù)據(jù)庫層最大程度的脫離,也確保了系統(tǒng)組件的可維護(hù)性和可重用性。而“三層+插件”架構(gòu),則是利用插件技術(shù)和AOP方法在三層結(jié)構(gòu)體系基礎(chǔ)上對(duì)軟件系統(tǒng)的橫向分解,目的就是要實(shí)現(xiàn)系統(tǒng)組件的松耦合。按地域分布的結(jié)構(gòu)體系,則是三層架構(gòu)和“三層+插件”架構(gòu)在跨地域軟件系統(tǒng)中的一種解決方案。

      參考文獻(xiàn)

      [1]胡文生,楊劍鋒,趙明.面向可維護(hù)性的軟件體系結(jié)構(gòu)設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2016,33(07):145-149.

      [2]謝偉明.面向服務(wù)的軟件體系架構(gòu)總體設(shè)計(jì)[J].電子技術(shù)與軟件工程,2016,59(24):42.

      猜你喜歡
      表示層插件架構(gòu)
      基于FPGA的RNN硬件加速架構(gòu)
      功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
      自編插件完善App Inventor與樂高機(jī)器人通信
      LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
      ASP.NET三層構(gòu)架解析
      基于SSH框架科研管理系統(tǒng)的設(shè)計(jì)
      MapWindowGIS插件機(jī)制及應(yīng)用
      一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
      基于Revit MEP的插件制作探討
      武鸣县| 邯郸县| 新田县| 苗栗市| 城口县| 吴桥县| 三明市| 敦化市| 明溪县| 朝阳区| 遵化市| 额尔古纳市| 石嘴山市| 巩留县| 兴城市| 措勤县| 新密市| 陈巴尔虎旗| 建始县| 新密市| 鹿泉市| 松滋市| 故城县| 蒲城县| 平原县| 林州市| 巴南区| 九台市| 深水埗区| 辽阳市| 无极县| 全南县| 塘沽区| 临西县| 府谷县| 瓮安县| 灌阳县| 烟台市| 宁化县| 绥中县| 韶山市|