季定業(yè) 華為軟件技術(shù)有限公司
軟件產(chǎn)業(yè)經(jīng)過多年的發(fā)展,與各行業(yè)的融合逐漸深入,傳統(tǒng)制造業(yè)和服務業(yè)的信息化程度日益提高,但一個個獨立的“信息孤島”卻也逐漸成為企業(yè)的負擔,企業(yè)IT部門的投資比例逐年上升,但是對企業(yè)核心競爭力的提升和經(jīng)營目標的貢獻卻未能達到預期。
圖1為云構(gòu)件平臺的開發(fā)流程;與傳統(tǒng)的開發(fā)模式相似,以傳統(tǒng)的軟件定制模式為切入點,使用數(shù)據(jù)庫驅(qū)動為主,但它并不依賴如Eclipse、IDEA這樣開發(fā)工具,它的載體是瀏覽器;它是具備面向構(gòu)件模式(具有高可重用性的特性)和云端部署(有效地體現(xiàn)共享模式和實時發(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)件。
圖一 云構(gòu)件平臺的開發(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。
圖二 Java函數(shù)信息
被成功登記并發(fā)布后就會形成我們所說的構(gòu)件;通過上述的配置,使用者就能夠通過代碼(上圖中為join)在云端找到這個函數(shù),并在自已的設(shè)計業(yè)務中使用,而云端也能夠獲取使用這個構(gòu)件的方法,并且可以利用Java反射機制設(shè)置它的入?yún)ⅲ瑘?zhí)行它,得到回參。
②動態(tài)編譯工件預編譯組件有一定的局限性,依賴于用戶開發(fā)環(huán)境進行編譯,最終打包到平臺上使用,嚴格來說這種方式并不是真正開發(fā)的云模型所使用的,這個功能就是這個一種組件更適合一些經(jīng)常不修改的,如電子郵件,短信和刪除操作的數(shù)據(jù)表等。
同樣地,我們需要保存這些代碼進容器中(如數(shù)據(jù)庫),并通過代碼(上圖中為join)在云端找到這個函數(shù)并使用,而云端也能夠獲取使用這個構(gòu)件的代碼體,并選擇適當?shù)囊鎴?zhí)行它。
③兩者混合組成的構(gòu)件
既指預編譯組件又動態(tài)編譯組件,為了更合理地利用云平臺中的資源,應該允許不同類型組件的組合恢復,這個組件是一種重用現(xiàn)成的和歷史資源,軟件企業(yè)的重要表現(xiàn)之一經(jīng)歷了一段時間,由于許多不同的原因留下了大量的歷史資源,這些資源可能是一個功能包,一些功能等;而且這種資源具有很大的應用價值,使用應用程序的組件,組成組件,不僅可以重用現(xiàn)有資源,而且資源更抽象,形成一個通用組件,它與這兩個組件的使用過程是相似的,還有一個獨特的代碼,可以通過云查看和運行。
(2)性能優(yōu)化
通過第一點對構(gòu)件的實現(xiàn)描述不難發(fā)現(xiàn),構(gòu)件基本上運作在反射機制和動態(tài)編譯的環(huán)境下,這會給運行環(huán)境帶來極大的資源損耗,使性能是急速下降;為此我們需要為云構(gòu)件平臺考慮緩存機制。
由于使用Java反射機制,相比正常的類調(diào)用,性能會下降很多,例如當lass會被調(diào)用時會用Class.for Name進行加載,而Class.forName方法的調(diào)用會執(zhí)行Class類文件在整個類路徑下的搜索,頻繁調(diào)用比較影響性能,同樣地還有對方法的執(zhí)行等,那么這類操作,我們需要使用緩存機制、靜態(tài)集合或者緩存中間件en cache等都是一個不錯的選擇;如下代碼片段:
圖三 代碼片段
云端開發(fā)與部署云端是一個很好的軟件聚合平臺,它能提供一系列的強大的服務,包括代碼的編譯、版本的管理、模塊功能的導出、安裝、部署、以及軟件授權(quán)與發(fā)布等;在云端上進行開發(fā),我們不需要額外安裝第三方的開發(fā)環(huán)境,只需要準備一個瀏覽器就可以進入開發(fā)工作。云端上的應用開發(fā)一般是實時進行的,基于SaaS的即見即所得的應用服務,而這些應用中包含構(gòu)件、業(yè)務模塊、UI界面等;被開發(fā)出來的應用,經(jīng)過云端平臺提供的授權(quán)配置,可以供應給第三方使用。
在過去的項目實施中,往往都有這樣的場景,是新成員加入的發(fā)展過程,還是有些成員暫時分配其他項目團隊,新成員,這種情況接管人員必須了解 當前項目來自相關(guān)文檔和代碼關(guān)系中的邏輯,這將導致研究并了解時間的損失,以及成本和浪費。
在國家宏觀背景下一批業(yè)績優(yōu)異的高新科技企業(yè)紛紛走上并購和整合之路,企業(yè)的并購和整合必然會發(fā)生兩個企業(yè)產(chǎn)品線不統(tǒng)一的情況,在基礎(chǔ)設(shè)施和應用架構(gòu)上都存在不同程度的沖突和異構(gòu)設(shè)計,這時就需要站在企業(yè)高層和全局的視角,重新梳理和整合企業(yè)架構(gòu)。