季定業 華為軟件技術有限公司
軟件產業經過多年的發展,與各行業的融合逐漸深入,傳統制造業和服務業的信息化程度日益提高,但一個個獨立的“信息孤島”卻也逐漸成為企業的負擔,企業IT部門的投資比例逐年上升,但是對企業核心競爭力的提升和經營目標的貢獻卻未能達到預期。
圖1為云構件平臺的開發流程;與傳統的開發模式相似,以傳統的軟件定制模式為切入點,使用數據庫驅動為主,但它并不依賴如Eclipse、IDEA這樣開發工具,它的載體是瀏覽器;它是具備面向構件模式(具有高可重用性的特性)和云端部署(有效地體現共享模式和實時發布)。
(1)構件的實現構件是整個架構的主要部分,是一種把代碼包裝成一個個粒度極少的組件,每個組件會完成一個微少的功能,不同組件的組合,就可以完成一個完整的業務功能,然后又可以被重新使用,轉化為一個更大粒度的組件;因此它具有高的可重用性;構件主要有三種表現形式,分別是預編譯的構件、動態編譯的構件,還有兩者混合組成的構件。

圖一 云構件平臺的開發過程圖
①預編譯的構件就是指預先編譯好的代碼(下面以Java為例,編譯后會產生class文件),其本質上是一個函數,有標準的入口和出口參數,如下代碼:

這是一個簡單Java函數,功能是把兩個字符串合成一個字符串;象這類函數,我們編譯好class文件后,傳統的開發模式是放到開發環意下就能直接使用;但在云模式中,我們要像在開發環境一樣地使用它,就得先讓使用者知道它放在哪里和怎么使用,因此需要預先登記這個函數的信息,并保存進容器中(如數據庫),如圖2。

圖二 Java函數信息
被成功登記并發布后就會形成我們所說的構件;通過上述的配置,使用者就能夠通過代碼(上圖中為join)在云端找到這個函數,并在自已的設計業務中使用,而云端也能夠獲取使用這個構件的方法,并且可以利用Java反射機制設置它的入參,執行它,得到回參。
②動態編譯工件預編譯組件有一定的局限性,依賴于用戶開發環境進行編譯,最終打包到平臺上使用,嚴格來說這種方式并不是真正開發的云模型所使用的,這個功能就是這個一種組件更適合一些經常不修改的,如電子郵件,短信和刪除操作的數據表等。
同樣地,我們需要保存這些代碼進容器中(如數據庫),并通過代碼(上圖中為join)在云端找到這個函數并使用,而云端也能夠獲取使用這個構件的代碼體,并選擇適當的引擎執行它。
③兩者混合組成的構件
既指預編譯組件又動態編譯組件,為了更合理地利用云平臺中的資源,應該允許不同類型組件的組合恢復,這個組件是一種重用現成的和歷史資源,軟件企業的重要表現之一經歷了一段時間,由于許多不同的原因留下了大量的歷史資源,這些資源可能是一個功能包,一些功能等;而且這種資源具有很大的應用價值,使用應用程序的組件,組成組件,不僅可以重用現有資源,而且資源更抽象,形成一個通用組件,它與這兩個組件的使用過程是相似的,還有一個獨特的代碼,可以通過云查看和運行。
(2)性能優化
通過第一點對構件的實現描述不難發現,構件基本上運作在反射機制和動態編譯的環境下,這會給運行環境帶來極大的資源損耗,使性能是急速下降;為此我們需要為云構件平臺考慮緩存機制。
由于使用Java反射機制,相比正常的類調用,性能會下降很多,例如當lass會被調用時會用Class.for Name進行加載,而Class.forName方法的調用會執行Class類文件在整個類路徑下的搜索,頻繁調用比較影響性能,同樣地還有對方法的執行等,那么這類操作,我們需要使用緩存機制、靜態集合或者緩存中間件en cache等都是一個不錯的選擇;如下代碼片段:

圖三 代碼片段
云端開發與部署云端是一個很好的軟件聚合平臺,它能提供一系列的強大的服務,包括代碼的編譯、版本的管理、模塊功能的導出、安裝、部署、以及軟件授權與發布等;在云端上進行開發,我們不需要額外安裝第三方的開發環境,只需要準備一個瀏覽器就可以進入開發工作。云端上的應用開發一般是實時進行的,基于SaaS的即見即所得的應用服務,而這些應用中包含構件、業務模塊、UI界面等;被開發出來的應用,經過云端平臺提供的授權配置,可以供應給第三方使用。
在過去的項目實施中,往往都有這樣的場景,是新成員加入的發展過程,還是有些成員暫時分配其他項目團隊,新成員,這種情況接管人員必須了解 當前項目來自相關文檔和代碼關系中的邏輯,這將導致研究并了解時間的損失,以及成本和浪費。
在國家宏觀背景下一批業績優異的高新科技企業紛紛走上并購和整合之路,企業的并購和整合必然會發生兩個企業產品線不統一的情況,在基礎設施和應用架構上都存在不同程度的沖突和異構設計,這時就需要站在企業高層和全局的視角,重新梳理和整合企業架構。