国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于云端的面向構(gòu)件開發(fā)的企業(yè)軟件架構(gòu)

2018-06-13 06:52李正權(quán)
現(xiàn)代計算機 2018年14期
關(guān)鍵詞:云端代碼構(gòu)件

李正權(quán)

(廣東省科技基礎(chǔ)條件平臺中心,廣州 510033)

0 引言

隨著互聯(lián)網(wǎng)的興起,人們對軟件應(yīng)用、企業(yè)應(yīng)用的不再是片面和簡單的認識;因此現(xiàn)今企業(yè)應(yīng)用大部分都是復(fù)雜多變的,并且還帶有各種不同企業(yè)文化的個性化要求,例如OA、CRM、ERP等,雖然網(wǎng)上很多通用型產(chǎn)品,但很大的場景還是針對不同的企業(yè)進行個性化的定制,那么如何更有效地應(yīng)對市場上這類需求,正是現(xiàn)在所提出的云端面向構(gòu)件開發(fā)(以下簡稱云構(gòu)件)的模式所解決的問題。

1 基本開發(fā)流程

圖1為云構(gòu)件平臺的開發(fā)流程;與傳統(tǒng)的開發(fā)模式相似,以傳統(tǒng)的軟件定制模式為切入點,使用數(shù)據(jù)庫驅(qū)動為主,但它并不依賴如Eclipse、IDEA這樣開發(fā)工具,它的載體是瀏覽器;它是具備面向構(gòu)件模式(具有高可重用性的特性)和云端部署(有效地體現(xiàn)共享模式和實時發(fā)布)。

2 具體方案設(shè)計

2.1 面向構(gòu)件開發(fā)

(1)構(gòu)件的實現(xiàn)

構(gòu)件是整個架構(gòu)的主要部分,是一種把代碼包裝成一個個粒度極少的組件,每個組件會完成一個微少的功能,不同組件的組合,就可以完成一個完整的業(yè)務(wù)功能,然后又可以被重新使用,轉(zhuǎn)化為一個更大粒度的組件;因此它具有高的可重用性;構(gòu)件主要有三種表現(xiàn)形式,分別是預(yù)編譯的構(gòu)件、動態(tài)編譯的構(gòu)件,還有兩者混合組成的構(gòu)件。

圖1 開發(fā)流程圖示

①預(yù)編譯的構(gòu)件

就是指預(yù)先編譯好的代碼(下面以Java為例,編譯后會產(chǎn)生class文件),其本質(zhì)上是一個函數(shù),有標(biāo)準(zhǔn)的入口和出口參數(shù),如下代碼:

這是一個簡單Java函數(shù),功能是把兩個字符串合成一個字符串;象這類函數(shù),我們編譯好class文件后,傳統(tǒng)的開發(fā)模式是放到開發(fā)環(huán)意下就能直接使用;

但在云模式中,我們要像在開發(fā)環(huán)境一樣地使用它,就得先讓使用者知道它放在哪里和怎么使用,因此需要預(yù)先登記這個函數(shù)的信息,并保存進容器中(如數(shù)據(jù)庫),如圖2。

圖2 構(gòu)件發(fā)布

被成功登記并發(fā)布后就會形成我們所說的構(gòu)件;通過上述的配置,使用者就能夠通過代碼(上圖中為join)在云端找到這個函數(shù),并在自已的設(shè)計業(yè)務(wù)中使用,而云端也能夠獲取使用這個構(gòu)件的方法,并且可以利用Java反射機制設(shè)置它的入?yún)?,?zhí)行它,得到回參。

②動態(tài)編譯的構(gòu)件

預(yù)編譯的構(gòu)件存在一定的限制,依賴用戶開發(fā)環(huán)境進行編譯,最后打包到平臺上才能使用,嚴格來說,這種方式還不是真正的云端開發(fā)所使用的模式,這種構(gòu)件比較適合一些不經(jīng)常修改的功能,例如郵件發(fā)送、短信發(fā)送、數(shù)據(jù)表的增刪改等操作;但實際使用中有很大一部分是需要靈活編寫的,這種代碼需要實時進行修改并實時發(fā)布使用,例如查詢條件、變量設(shè)置等;這時候我們需要一個能支撐代碼動態(tài)執(zhí)行的環(huán)境,使用腳本引擎是一個不錯的選擇,例如Java8自帶的Java-Script,使用Java編寫的Groovy,還有Python等也是一個很好的選擇;如圖3。

圖3 構(gòu)件發(fā)布

同樣地,我們需要保存這些代碼進容器中(如數(shù)據(jù)庫),并通過代碼(上圖中為join)在云端找到這個函數(shù)并使用,而云端也能夠獲取使用這個構(gòu)件的代碼體,并選擇適當(dāng)?shù)囊鎴?zhí)行它。

③兩者混合組成的構(gòu)件

兩者指的是預(yù)編譯的構(gòu)件和動態(tài)編譯的構(gòu)件,云平臺中為了資源更合理的利用,應(yīng)該允許不同類型的構(gòu)件重新再組合使用,該類構(gòu)件是一種對現(xiàn)成的和歷史資源再利用的一種重要表現(xiàn),軟件企業(yè)中經(jīng)歷了一段時間后,由于各種原因會留下很多歷史可用資源,這些資源可能是某個功能包、一些函數(shù)等;而該類資源還是具有很大的應(yīng)用價值,利用構(gòu)件對該類應(yīng)用進行重新包裝,形成構(gòu)件,不但可以再利用現(xiàn)有的資源,而且可以把資源更抽象化,形成通用形組件,例如:郵件發(fā)送、短信發(fā)送等;如圖4是一個短信發(fā)送的通用構(gòu)件:

圖4 短信發(fā)送構(gòu)件

它的使用過程跟上述兩種構(gòu)件類似,也有唯一的代碼,并能通過云端查找和運行。

(2)性能優(yōu)化

通過第一點對構(gòu)件的實現(xiàn)描述不難發(fā)現(xiàn),構(gòu)件基本上運作在反射機制和動態(tài)編譯的環(huán)境下,這會給運行環(huán)境帶來極大的資源損耗,使性能是急速下降;為此我們需要為云構(gòu)件平臺考慮緩存機制。

①類緩存

由于使用Java反射機制,相比正常的類調(diào)用,性能會下降很多,例如當(dāng)Class會被調(diào)用時會用Class.for?Name進行加載,而Class.forName方法的調(diào)用會執(zhí)行Class類文件在整個類路徑下的搜索,頻繁調(diào)用比較影響性能,同樣地還有對方法的執(zhí)行等,那么這類操作,我們需要使用緩存機制、靜態(tài)集合或者緩存中間件en?cache等都是一個不錯的選擇;如下代碼片段:

圖5 類緩存

②腳本緩存

腳本指的是由動態(tài)編譯的構(gòu)件保存的代碼,這類代碼相比反身機制更損耗資源和性能,預(yù)編譯的構(gòu)件,至少類是已經(jīng)存在的,但動態(tài)構(gòu)件它的類是在云端被使用時才進行實時的編譯,因此同樣需要緩存;以Groovy為例,其主要緩存目標(biāo)是已編譯好的腳本對象Script。

(3)軟件結(jié)構(gòu)與模板

構(gòu)件是一個單獨的微業(yè)務(wù)單元,他們的互相組合會產(chǎn)生新的業(yè)務(wù),就好象堆積木一樣,然后一個或者多個構(gòu)件形成軟件所需要的功能模塊,不同功能模塊的組合就是我們所說的應(yīng)用軟件;優(yōu)化處理后的軟件形成一個通用性極高的模板,可以針對未來相似的應(yīng)用再進行復(fù)制和二次開發(fā)重用,以下是軟件的組成結(jié)構(gòu)圖:

圖6 軟件組成圖示

不難看出,通過一定時間的沉淀,不同的應(yīng)用模板最終會組成企業(yè)所中心應(yīng)用庫;再開發(fā)類似的項目時,就可以在中心庫中提出相似度高的模板進行二次開發(fā),成本會大幅下降。

2.2 云端部署與資源共享

(1)云端開發(fā)與部署

云端是一個很好的軟件聚合平臺,它能提供一系列的強大的服務(wù),包括代碼的編譯、版本的管理、模塊功能的導(dǎo)出、安裝、部署、以及軟件授權(quán)與發(fā)布等;在云端上進行開發(fā),我們不需要額外安裝第三方的開發(fā)環(huán)境,只需要準(zhǔn)備一個瀏覽器就可以進入開發(fā)工作。

云端上的應(yīng)用開發(fā)一般是實時進行的,基于SaaS的即見即所得的應(yīng)用服務(wù),而這些應(yīng)用中包含構(gòu)件、業(yè)務(wù)模塊、UI界面等;被開發(fā)出來的應(yīng)用,經(jīng)過云端平臺提供的授權(quán)配置,可以供應(yīng)給第三方使用。

同時,云端上除了能支持多租戶方式外,還支持個性定制和使用模式,軟件模塊能單獨被導(dǎo)出到另外一個云端應(yīng)用服務(wù)器上使用,并且安裝過程簡單,安裝后的軟件能進行二次定制開發(fā)

圖7 生成安裝包圖示

(2)資源共享

過去的開發(fā)應(yīng)用中,資源之間并未能很好地分享,各種資源相當(dāng)于一個單獨的孤島;云端的出現(xiàn),解決了這種資源被發(fā)現(xiàn)和共享使用的問題,在云端中,只要一人開發(fā)了某構(gòu)件,并發(fā)布到平臺上,其他接入人員就能實時地發(fā)現(xiàn)和使用,很好地避免了資源的重復(fù)開發(fā)帶來的人力和時間耗損,如圖8。

圖8 云端開發(fā)圖示

2.3 更多的應(yīng)用價值

在過去項目實施中,往往有這樣一種場景,就是開發(fā)過程中有新的成員加入,或者某些成員被臨時調(diào)配其他項目組,新的成員接手,這種情況下接手的人員必須從相關(guān)文檔和代碼中理解當(dāng)前項目中的邏輯關(guān)系,這樣會造成一個學(xué)習(xí)和理解時間上的耗損,而且這個耗損代價并不少;在構(gòu)件化的平臺里面,邏輯性都是以圖型的形式表達并加以注釋,使得新接手的人員能快速地理解當(dāng)前業(yè)務(wù)邏輯,同時由于構(gòu)件的封裝,開發(fā)人員也只需要通過相關(guān)說明,理解構(gòu)件的入口參數(shù)和出口參數(shù)就可以使用,維護的成本會大大減少。

3 未來的應(yīng)用現(xiàn)狀及前景展望

現(xiàn)今市場上不少的軟件企業(yè)創(chuàng)造了各類不同的開發(fā)平臺,并為自己的平臺定義各種各樣的開發(fā)模式,但無論開發(fā)速度上有多優(yōu)越,還是存在著各種缺失,例如維護的成本,學(xué)習(xí)成本,資源的再利用等;云構(gòu)件模式是一種具有隨著資源的增長,開發(fā)時間縮短和成本降低的特性,在實際應(yīng)用中,能更有效地提高熟練開發(fā)人員的開發(fā)時間,提高其效率;能夠有利于新接觸的開發(fā)人員縮短學(xué)習(xí)的時間,快速進入正作狀態(tài)。

隨著AI人工智能技術(shù)的興起,很多資深的專家開始研究讓AI來完成項目代碼的編寫工作,但是代碼隨機性和復(fù)雜性將會帶來很大的問題;而構(gòu)件模式未來可以利用人工智能的各類算法讓機器學(xué)習(xí)構(gòu)件的使用,更進一步從現(xiàn)有的庫中學(xué)習(xí)業(yè)務(wù)邏輯的排列方法,做到讓機器識別出各類需求對應(yīng)的業(yè)務(wù)功能,并自動完成;相比于代碼的實現(xiàn)方式難度將會大大降低。

圖9 優(yōu)化開發(fā)過程圖示

4 結(jié)語

本設(shè)計是基于云端的構(gòu)件開發(fā)模型,在利用構(gòu)件的高可重用性的基礎(chǔ)上,配合云端的共享資源模式,使得資源的再利用達到一個更高的階段,具有隨著構(gòu)件、模塊、模板應(yīng)用的增長,開發(fā)周期會大幅縮短、成本會降低;對人員技術(shù)要求的也會將隨之而降低。

[1](美)Vaughn Vernon(沃恩·弗農(nóng)).企業(yè)應(yīng)用架構(gòu)模式.滕云譯.電子工業(yè)出版社,2014-03-01.

[2](美)Eric Evans.實現(xiàn)領(lǐng)域驅(qū)動設(shè)計.趙俐,盛海艷,劉霞譯.人民郵電出版社,2016-06-01.

猜你喜歡
云端代碼構(gòu)件
鋼筋混凝土構(gòu)件裂縫控制
四海心連·云端匯聚
在云端永生
云端之城
神秘的代碼
基于構(gòu)件的軟件工程技術(shù)與理論方法探討
一周機構(gòu)凈增(減)倉股前20名
一行代碼玩完19億元衛(wèi)星
近期連續(xù)上漲7天以上的股
在云端