龍軍
摘要:該文從介紹軟件架構(gòu)入手,對(duì)常見的架構(gòu)進(jìn)行分析比較,針對(duì)分布式異構(gòu)系統(tǒng)需要,著重對(duì)面向服務(wù)架構(gòu)及Web Service展開研究,在此基礎(chǔ)分析所需能力,最后提出地方應(yīng)用性本科院校模塊化課程建設(shè)的構(gòu)思與實(shí)施方案。
關(guān)鍵詞:軟件架構(gòu);面向服務(wù)架構(gòu);分布式;異構(gòu)系統(tǒng)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)25-0106-02
計(jì)算機(jī)軟硬件技術(shù)的發(fā)展革新社會(huì)運(yùn)行模式和業(yè)態(tài)系統(tǒng),催生出更多的系統(tǒng)結(jié)構(gòu),作為軟件基本結(jié)構(gòu)的架構(gòu)越發(fā)重要。軟件開發(fā)要根據(jù)業(yè)務(wù)需求,選擇合適的體系架構(gòu)來(lái)滿足功能和質(zhì)量要求。軟件架構(gòu)是基于一定設(shè)計(jì)原則,從不同角度對(duì)組成系統(tǒng)的各部分進(jìn)行搭配和安排,形成系統(tǒng)的多個(gè)結(jié)構(gòu)而組成架構(gòu),含所有組件、組件外部可見屬性及組件間的關(guān)系。
1 軟件架構(gòu)概述
軟件架構(gòu)是對(duì)系統(tǒng)運(yùn)行時(shí)相關(guān)元素的抽象,描述對(duì)象是構(gòu)成系統(tǒng)的抽象組件,組件間用通訊連接,面向?qū)ο蟮某绦蛟O(shè)計(jì)中,連接常用接口實(shí)現(xiàn)。軟件架構(gòu)包括核心的架構(gòu)元件、負(fù)責(zé)元件間通訊的聯(lián)接器、描述完成系統(tǒng)需求的任務(wù)流等要素。架構(gòu)元件首先是邏輯元件,它們?nèi)绾畏诺接布稀⑷绾螢檎麄€(gè)系統(tǒng)的運(yùn)維、升級(jí)服務(wù)等是要研究的重點(diǎn),在此基礎(chǔ)上設(shè)計(jì)邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。軟件架構(gòu)設(shè)計(jì)要達(dá)到可靠、安全、易用、可維護(hù)、用戶數(shù)增加的可擴(kuò)展、針對(duì)客戶需求進(jìn)行調(diào)整的可定制、對(duì)現(xiàn)有系統(tǒng)功能和性能的可擴(kuò)充等一系列目標(biāo)。
2 常見的軟件應(yīng)用系統(tǒng)架構(gòu)模式
2.1 分層架構(gòu)
最常見的軟件架構(gòu),將系統(tǒng)分成具有明確角色和分工的若干層,各層相互屏蔽細(xì)節(jié),通過(guò)接口通訊。常有負(fù)責(zé)用戶界面的表現(xiàn)層、實(shí)現(xiàn)業(yè)務(wù)邏輯的業(yè)務(wù)層、提供業(yè)務(wù)邏輯通用接口的服務(wù)層、提供數(shù)據(jù)的持久層和保存數(shù)據(jù)的數(shù)據(jù)庫(kù)等。
分層架構(gòu)結(jié)構(gòu)簡(jiǎn)單、易理解和開發(fā)、便于程序員分工、每層都可獨(dú)立測(cè)試。但系統(tǒng)部署、維護(hù)、升級(jí)工作量大,當(dāng)用戶請(qǐng)求大量增加時(shí),難擴(kuò)展。
2.2 多層C/B/S架構(gòu)
客戶端/服務(wù)器模式(C/S)由單服務(wù)器和多客戶端構(gòu)成,客戶端向服務(wù)器提出服務(wù)請(qǐng)求,服務(wù)器響應(yīng)并提供相應(yīng)服務(wù)。多層C/S架構(gòu)通過(guò)引入中間層,將復(fù)雜邏輯從二層結(jié)構(gòu)中分離,并提供便于擴(kuò)充、易于訪問(wèn)、易于管理的設(shè)計(jì)思想和方法,將各應(yīng)用服務(wù)封裝部署到應(yīng)用服務(wù)器,實(shí)現(xiàn)安全、穩(wěn)定、高效的系統(tǒng)應(yīng)用。常由前臺(tái)、Web服務(wù)器、中間件/應(yīng)用服務(wù)器及數(shù)據(jù)庫(kù)服務(wù)器等四層組成。中間件層可提高系統(tǒng)伸縮性和并發(fā)性,隔離Web服務(wù)器對(duì)企業(yè)數(shù)據(jù)庫(kù)的直接訪問(wèn)請(qǐng)求,增加了數(shù)據(jù)安全。
B/S是三層結(jié)構(gòu),由Web服務(wù)與數(shù)據(jù)庫(kù)服務(wù)兩級(jí)服務(wù)組成,四層架構(gòu)通常包括B/S結(jié)構(gòu),Web瀏覽器是用于文檔檢索和顯示的客戶應(yīng)用程序,通過(guò)超文本傳輸協(xié)議HTTP與Web服務(wù)器相連,降低了C/S模式客戶端軟件的開發(fā)和維護(hù)成本。
2.3 企業(yè)數(shù)據(jù)交換總線架構(gòu)
企業(yè)數(shù)據(jù)交換總線是企業(yè)不同應(yīng)用系統(tǒng)間進(jìn)行信息交換的公共通道,數(shù)據(jù)總線是基于中間件或CORBA/IIOP協(xié)議的軟件系統(tǒng),主要是按照預(yù)定義的配置或消息頭定義,進(jìn)行數(shù)據(jù)、請(qǐng)求或回復(fù)的接收與分發(fā)。
企業(yè)數(shù)據(jù)交換總線有實(shí)時(shí)交易與大數(shù)據(jù)量傳輸功能,但主要用于實(shí)時(shí)交易,對(duì)可靠的大數(shù)據(jù)傳輸單獨(dú)設(shè)計(jì)。用CORBA為通訊協(xié)議時(shí),交換總線就是對(duì)象請(qǐng)求代理(ORB)。還可在交換總線上掛接軟件系統(tǒng),并設(shè)計(jì)代理功能,代理間以并行或串行方式進(jìn)行工作,通過(guò)掛接在同一交換總線上的控制器協(xié)調(diào)各代理間的操作。
2.4 事件驅(qū)動(dòng)架構(gòu)
事件驅(qū)動(dòng)架構(gòu)通過(guò)事件進(jìn)行通訊,由接收事件的事件隊(duì)列、將事件分發(fā)到各業(yè)務(wù)邏輯單元的分發(fā)器、實(shí)現(xiàn)業(yè)務(wù)邏輯等構(gòu)成,處理完成后發(fā)出事件,觸發(fā)下一操作的事件處理器、分發(fā)器與處理器間聯(lián)系的事件通道。該架構(gòu)使事件處理器間高度解耦,擴(kuò)展性好、適用廣、性能佳、易部署,但開發(fā)復(fù)雜,涉及多處理器,回滾難、測(cè)試難。
2.5 微核架構(gòu)
微核架構(gòu)的內(nèi)核只包含系統(tǒng)運(yùn)行的最小功能,主要功能和業(yè)務(wù)邏輯通過(guò)插件實(shí)現(xiàn),插件相互獨(dú)立,功能延伸好、易操作、易部署,可定制性高、可漸進(jìn)式開發(fā)。但內(nèi)核常是獨(dú)立單元,不易做成分布式,難擴(kuò)展,插件與內(nèi)核的通訊使開發(fā)難度高。
2.6 面向服務(wù)架構(gòu)(SOA)
面向服務(wù)架構(gòu)是應(yīng)用體系架構(gòu),體系所有功能為獨(dú)立的服務(wù),服務(wù)方進(jìn)行操作后,得到滿足被服務(wù)方需求的結(jié)果,基于消息機(jī)制或遠(yuǎn)程過(guò)程調(diào)用,服務(wù)通過(guò)自身可調(diào)用接口與程序相連。服務(wù)都是獨(dú)立部署單元,單元是分布式,互相解耦,通過(guò)如REST、SOAP等遠(yuǎn)程通訊協(xié)議聯(lián)系,屏蔽復(fù)雜的邏輯關(guān)系。
SOA易擴(kuò)展、低耦合、可單獨(dú)測(cè)試,組件可持續(xù)集成式開發(fā),實(shí)時(shí)部署,不間斷升級(jí)。但服務(wù)的拆細(xì)使系統(tǒng)依賴大量服務(wù),性能降低,服務(wù)間通訊使架構(gòu)復(fù)雜,交易回滾難。
2.7 云架構(gòu)
云架構(gòu)不使用中央數(shù)據(jù)庫(kù),將數(shù)據(jù)復(fù)制到內(nèi)存中成為內(nèi)存數(shù)據(jù)單元,業(yè)務(wù)處理封裝成單獨(dú)的處理單元,當(dāng)訪問(wèn)量增加,新建處理單元;訪問(wèn)量減少,關(guān)閉處理單元,是最易擴(kuò)展的架構(gòu)。達(dá)到高負(fù)載、高擴(kuò)展、動(dòng)態(tài)部署的目標(biāo),但實(shí)現(xiàn)復(fù)雜、成本高、難測(cè)試。
3 面向服務(wù)架構(gòu)(SOA)的分析
應(yīng)用系統(tǒng)通常是在不同時(shí)期基于不同平臺(tái)根據(jù)不同用戶需求而設(shè)計(jì)制作,數(shù)據(jù)來(lái)源不一導(dǎo)致數(shù)據(jù)組織形式和數(shù)據(jù)存儲(chǔ)方式千差萬(wàn)別,不同規(guī)模的數(shù)據(jù)和不同類型用戶的差異化要求使數(shù)據(jù)服務(wù)和應(yīng)用服務(wù)等差異大,功能各異的系統(tǒng)獨(dú)立運(yùn)行,成為信息孤島,這要求通過(guò)系統(tǒng)集成實(shí)現(xiàn)應(yīng)用間的資源交換和共享。
面向服務(wù)架構(gòu)以一系列基于XML/SOAP/Web Service/SCA/SDO/UDDI標(biāo)準(zhǔn)、可重用數(shù)據(jù)、業(yè)務(wù)服務(wù)組件為基礎(chǔ),以業(yè)務(wù)流程為核心、對(duì)業(yè)務(wù)邏輯高度抽象的架構(gòu)模型和軟件開發(fā)方式,將異構(gòu)平臺(tái)上不同應(yīng)用的功能組件封裝成有良好定義、與平臺(tái)無(wú)關(guān)、標(biāo)準(zhǔn)、可拼接、可拆卸、可復(fù)用的服務(wù),使服務(wù)能被部署、發(fā)現(xiàn)和調(diào)用,形成一松散耦合的新軟件系統(tǒng),便于數(shù)據(jù)集成,提高了數(shù)據(jù)利用率。
在SOA概念中,由多層服務(wù)組成的每個(gè)節(jié)點(diǎn)應(yīng)用都是單一服務(wù);在SOA定義里,服務(wù)是向外提供一組整體功能的獨(dú)立應(yīng)用,無(wú)論該應(yīng)用由幾層服務(wù)組成,少了任一層,都不能正常工作。應(yīng)用間一般借助如消息中間件、交易中間件等來(lái)實(shí)現(xiàn)SOA需求,可相互調(diào)用各自的內(nèi)部服務(wù)、模塊或數(shù)據(jù)交換、驅(qū)動(dòng)交易等。
軟件系統(tǒng)建立時(shí)間各異、獨(dú)立封閉運(yùn)行,造成信息傳輸及資源利用困難。用Web Service進(jìn)行異構(gòu)系統(tǒng)組建,在對(duì)原系統(tǒng)數(shù)據(jù)保留同時(shí),降低數(shù)據(jù)冗余,提高運(yùn)行效率。Web Service是多服務(wù)體系結(jié)構(gòu)最典型、最流行的應(yīng)用模式,最經(jīng)典的是一Web應(yīng)用經(jīng)SOAP與WSDL協(xié)議向外提供內(nèi)部服務(wù),不像傳統(tǒng)SOA能提供豐富的應(yīng)用類型。
Web Service對(duì)系統(tǒng)整合時(shí)就組成一組件結(jié)構(gòu)松散的系統(tǒng)。系統(tǒng)接口、應(yīng)用通訊、數(shù)據(jù)轉(zhuǎn)換和目錄信息等都建立在開放和被廣為接受的標(biāo)準(zhǔn)上,用戶可根據(jù)要用的信息進(jìn)行捕獲,將每個(gè)業(yè)務(wù)進(jìn)行發(fā)布,實(shí)現(xiàn)信息間的互通共享,完成Web應(yīng)用的功能實(shí)現(xiàn)。
4 基于分布式異構(gòu)應(yīng)用系統(tǒng)開發(fā)的設(shè)計(jì)及能力要求
軟件應(yīng)用系統(tǒng)在構(gòu)建時(shí)要考慮在不同場(chǎng)景下使用,可開發(fā)統(tǒng)一的對(duì)外接口供不同設(shè)備使用。通過(guò)對(duì)系統(tǒng)實(shí)施全流程研究,挖掘各層次所需能力,繪出明確能力鏈,分析能力鏈上的節(jié)點(diǎn)及鏈接,建立所需匹配的知識(shí)鏈,構(gòu)建滿足知識(shí)和能力培養(yǎng)的課程鏈。界面設(shè)計(jì)是基本素養(yǎng),數(shù)據(jù)應(yīng)用是基本技能,代碼編寫是必備能力,算法設(shè)計(jì)是核心能力,系統(tǒng)管理能力是職業(yè)提升素質(zhì)。要進(jìn)行美工、數(shù)據(jù)庫(kù)、開發(fā)語(yǔ)言、軟件工程、工程實(shí)踐等方面綜合訓(xùn)練。
應(yīng)用軟件主要有桌面、Web、App等,可通過(guò)API接口或Web Service進(jìn)行連接。開發(fā)語(yǔ)言:桌面應(yīng)用有C++、C、C#、Java等;Web應(yīng)用后端用PHP、Python、Ruby,前端用HTML5等;App開發(fā)中蘋果用Object-c、安卓用Java、Web用HTML5等。
5 軟件工程相關(guān)專業(yè)的模塊化課程設(shè)計(jì)
地方應(yīng)用性本科院校軟件相關(guān)專業(yè)學(xué)生的軟件開發(fā)能力培養(yǎng)可基于分布式異構(gòu)系統(tǒng)的全方面知識(shí)、技能、素養(yǎng),整合重復(fù)、剔除無(wú)關(guān)內(nèi)容,用模塊化組合成一門課程,服務(wù)器后端及Web Service用PHP、前臺(tái)及Web App用HTML5、桌面及安卓用Java,總課時(shí)306。
新課程將原來(lái)相對(duì)獨(dú)立的課程整合成連續(xù)、系統(tǒng)、模塊化的綜合性課程,通過(guò)建立相應(yīng)的模塊化實(shí)踐教學(xué)體系,將理論、實(shí)驗(yàn)、實(shí)踐與創(chuàng)新創(chuàng)業(yè)融為一體,培養(yǎng)學(xué)生軟件工程實(shí)踐能力和創(chuàng)新創(chuàng)業(yè)素養(yǎng),將分散的知識(shí)、技能、素質(zhì)等要素連接起來(lái),建立起循序漸進(jìn)、螺旋上升的模塊化課程體系和教學(xué)模式。
參考文獻(xiàn):
[1] 黃博怡. Web Services技術(shù)手段在異構(gòu)系統(tǒng)集成中的應(yīng)用實(shí)踐[J].現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化,2017(9).
[2] 朱明.大數(shù)據(jù)服務(wù)深度需求與SOA協(xié)作集成的異構(gòu)系統(tǒng)融合機(jī)制[J].計(jì)算機(jī)測(cè)量與控制,2017(25).
[3] 楊新鵬.基于UDDI的網(wǎng)絡(luò)軟件系統(tǒng)集成模式與實(shí)現(xiàn)設(shè)計(jì)[J].重慶理工大學(xué)學(xué)報(bào),2016(12).
[4] 周從軍.基于三層架構(gòu)的軟件體系設(shè)計(jì)與應(yīng)用[J].信息與電腦,2017(15).
[5] 王志剛.軟件架構(gòu)核心問(wèn)題與關(guān)鍵決策探討[J].軟件導(dǎo)刊,2017(12).
【通聯(lián)編輯:梁書】