• 
    

    
    

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

      ?

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

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

      李正權(quán)

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

      0 引言

      隨著互聯(lián)網(wǎng)的興起,人們對軟件應用、企業(yè)應用的不再是片面和簡單的認識;因此現(xiàn)今企業(yè)應用大部分都是復雜多變的,并且還帶有各種不同企業(yè)文化的個性化要求,例如OA、CRM、ERP等,雖然網(wǎng)上很多通用型產(chǎn)品,但很大的場景還是針對不同的企業(yè)進行個性化的定制,那么如何更有效地應對市場上這類需求,正是現(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 具體方案設計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      兩者指的是預編譯的構(gòu)件和動態(tài)編譯的構(gòu)件,云平臺中為了資源更合理的利用,應該允許不同類型的構(gòu)件重新再組合使用,該類構(gòu)件是一種對現(xiàn)成的和歷史資源再利用的一種重要表現(xiàn),軟件企業(yè)中經(jīng)歷了一段時間后,由于各種原因會留下很多歷史可用資源,這些資源可能是某個功能包、一些函數(shù)等;而該類資源還是具有很大的應用價值,利用構(gòu)件對該類應用進行重新包裝,形成構(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)用,性能會下降很多,例如當Class會被調(diào)用時會用Class.for?Name進行加載,而Class.forName方法的調(diào)用會執(zhí)行Class類文件在整個類路徑下的搜索,頻繁調(diào)用比較影響性能,同樣地還有對方法的執(zhí)行等,那么這類操作,我們需要使用緩存機制、靜態(tài)集合或者緩存中間件en?cache等都是一個不錯的選擇;如下代碼片段:

      圖5 類緩存

      ②腳本緩存

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

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

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

      圖6 軟件組成圖示

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

      2.2 云端部署與資源共享

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

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

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

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

      圖7 生成安裝包圖示

      (2)資源共享

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

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

      2.3 更多的應用價值

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

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

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

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

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

      4 結(jié)語

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

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

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

      猜你喜歡
      云端代碼構(gòu)件
      云端之城
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      美人如畫隔云端
      行走在云端
      初中生(2017年3期)2017-02-21 09:17:43
      云端創(chuàng)意
      建筑構(gòu)件
      建筑構(gòu)件
      河南省| 灵石县| 枣阳市| 汉沽区| 南陵县| 怀化市| 大丰市| 墨江| 稻城县| 上犹县| 临清市| 山阳县| 象州县| 汉阴县| 闵行区| 游戏| 柞水县| 平昌县| 南江县| 平定县| 克山县| 阜平县| 嘉黎县| 广州市| 迭部县| 铜梁县| 资兴市| 景东| 北流市| 洛浦县| 霍州市| 旬阳县| 盈江县| 贺州市| 延津县| 长阳| 芜湖县| 手机| 平乐县| 延川县| 新民市|