顧學(xué)海, 胡 牧, 蔣厚明, 王 俊, 曹海濤(南瑞集團(tuán)公司(國網(wǎng)電力科學(xué)研究院), 南京 210000)
基于業(yè)務(wù)中間件容器的插件開發(fā)①
顧學(xué)海, 胡 牧, 蔣厚明, 王 俊, 曹海濤
(南瑞集團(tuán)公司(國網(wǎng)電力科學(xué)研究院), 南京 210000)
隨著移動智能設(shè)備的不斷發(fā)展更新, 移動應(yīng)用也面臨前所未有的發(fā)展. 同時(shí), 移動應(yīng)用向企業(yè)辦公進(jìn)行延伸, 在國家電網(wǎng)公司提出的信息化建設(shè)中, 移動互聯(lián)也是重要方面. 在基于移動平臺進(jìn)行移動應(yīng)用開發(fā)過程中,針對移動應(yīng)用的后臺服務(wù)的開發(fā)、運(yùn)行和部署問題, 提出了基于中間件容器的插件開發(fā), 實(shí)現(xiàn)移動應(yīng)用服務(wù)的快速開發(fā)和部署, 提高了移動應(yīng)用的開發(fā)和部署運(yùn)行的效率.
移動應(yīng)用; 中間件容器; 移動業(yè)務(wù)中間件
隨著智能終端設(shè)備和移動網(wǎng)絡(luò)的迅猛發(fā)展, 移動操作系統(tǒng)呈現(xiàn)多個(gè)系統(tǒng)共存的局面[1], 同時(shí), 移動應(yīng)用也得到了飛速進(jìn)步. 移動設(shè)備上的移動應(yīng)用操作便捷、交互性強(qiáng)和實(shí)時(shí)快捷等特點(diǎn), 讓移動應(yīng)用在生活和工作的各個(gè)方便都得到了應(yīng)用. 國家電網(wǎng)公司移動應(yīng)用也蓬勃發(fā)展, 除了與國網(wǎng)員工生活相關(guān)的移動應(yīng)用外, 與員工辦公相關(guān)的移動應(yīng)用也得到了很大的發(fā)展, 這對提高員工的工作效率和企業(yè)生產(chǎn)管理水平有著很大的作用, 移動應(yīng)用已經(jīng)與人們的生活和工作形影不離.
電網(wǎng)企業(yè)中, 移動應(yīng)用主要用于查抄電表度數(shù)、現(xiàn)場檢修以及電力監(jiān)控等方面, 實(shí)現(xiàn)電力辦公的實(shí)時(shí)化和智能化. 隨著各種電力業(yè)務(wù)需求, 移動應(yīng)用的需求也越來越高, 如何快速的開發(fā)移動應(yīng)用和進(jìn)行相關(guān)服務(wù)部署成為開發(fā)者所關(guān)注的話題. 但是, 移動應(yīng)用業(yè)務(wù)的不斷擴(kuò)大, 使得移動應(yīng)用的后臺服務(wù)開發(fā)越來越復(fù)雜,與其他業(yè)務(wù)系統(tǒng)有數(shù)據(jù)的相互交互. 基于業(yè)務(wù)中間件容器的插件開發(fā), 能快速開發(fā)復(fù)雜的移動后臺服務(wù), 并放入移動平臺, 隨平臺的后臺服務(wù)一起運(yùn)行, 減少了部署的壓力, 提高了開發(fā)和部署的效率. 同時(shí), 公司員工信息在一個(gè)公司中有著重要的作用, 如考勤、請教、考評等都會涉及到員工的基本信息, 本文基于移動平臺的業(yè)務(wù)中間件容器的插件開發(fā)技術(shù)實(shí)現(xiàn)了公司員工信息統(tǒng)計(jì)app的后臺服務(wù), 與傳統(tǒng)的移動后臺服務(wù)開發(fā)相比, 開發(fā)更快捷, 部署更方便, 效率更高.
移動中間件是指運(yùn)行于手機(jī)操作系統(tǒng)與企業(yè)業(yè)務(wù)系統(tǒng)之間的, 起到連接、交互、支撐和服務(wù)的中間軟件系統(tǒng)[5]. 根據(jù)中間件在軟件支撐和架構(gòu)的定位來看,基本上可以分為三大類: 應(yīng)用服務(wù)類中間件、應(yīng)用集成類中間件、業(yè)務(wù)架構(gòu)類中間件[2-4], 本文重點(diǎn)介紹業(yè)務(wù)中間件. 業(yè)務(wù)中間件則基于企業(yè)移動信息化市場中的與現(xiàn)有IT架構(gòu)中的業(yè)務(wù)系統(tǒng)交互的天然需求提出,其通過進(jìn)一步的封裝, 使得開發(fā)者可以方便地通過表現(xiàn)層、業(yè)務(wù)層或者數(shù)據(jù)層與原業(yè)務(wù)系統(tǒng)進(jìn)行完整交互,使用移動業(yè)務(wù)中間件開發(fā)的優(yōu)點(diǎn)如下[5]:
1) 解決了手機(jī)操作系統(tǒng)的發(fā)展不確定性的問題:手機(jī)發(fā)展道路和電腦發(fā)展階段和道路都有所不同, 從一開始所有廠商都認(rèn)識到操作系統(tǒng)的重要性, 故而在手機(jī)領(lǐng)域缺少電腦領(lǐng)域中某種操作系統(tǒng)一家獨(dú)大的基礎(chǔ), 這樣導(dǎo)致開發(fā)者不得不疲于為各個(gè)手機(jī)操作系統(tǒng)實(shí)現(xiàn)相同的功能. 而移動中間件的出現(xiàn)則一開始就以解決跨手機(jī)操作系統(tǒng)為目標(biāo).
2) 滿足了業(yè)務(wù)系統(tǒng)的天然交互特性: 在企業(yè)業(yè)務(wù)系統(tǒng)的現(xiàn)行演進(jìn)道路上, 開發(fā)者都不可避免的遇到與已經(jīng)建設(shè)多年的業(yè)務(wù)系統(tǒng)進(jìn)行交互的問題. 移動應(yīng)用后臺服務(wù)也是如此, 移動應(yīng)用前端展現(xiàn)的數(shù)據(jù)可能需要與原來的業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)的交互, 如果基于移動平臺, 把相關(guān)的業(yè)務(wù)系統(tǒng)服務(wù)都基于中間件的方式進(jìn)行開發(fā), 這些業(yè)務(wù)系統(tǒng)中間件都運(yùn)行在移動平臺容器中, 就解決了與業(yè)務(wù)系統(tǒng)進(jìn)行交互的問題, 簡化系統(tǒng)對接溝通代價(jià)、簡化了相應(yīng)的開發(fā)難度, 加速了開發(fā)效率.
3) 滿足了快速開發(fā)的時(shí)代需求: 隨著時(shí)代的發(fā)展,整個(gè)社會的的效率進(jìn)一步被提高, 對應(yīng)的整個(gè)軟件開發(fā)行業(yè)的開發(fā)效率和迭代速度也進(jìn)一步提高. 基于業(yè)務(wù)中間件容器的插件開發(fā), 能夠支持跨終端、跨業(yè)務(wù).同時(shí), 能夠支持基于移動平臺的熱部署, 實(shí)現(xiàn)邊開發(fā)邊調(diào)試, 提高開發(fā)效率.
復(fù)用、松耦合、互操作是中間件技術(shù)和這類產(chǎn)品的主要特征[6]. 移動業(yè)務(wù)中間件能夠屏蔽終端設(shè)備的硬件和軟件的差異性[7], 來適應(yīng)移動環(huán)境動態(tài)多變且異構(gòu)的特殊需求[8], 滿足開發(fā)者進(jìn)行高效開發(fā)的目的.
2.1 平臺結(jié)構(gòu)
移動平臺的總體框架關(guān)系如圖1所示, 包括了移動應(yīng)用終端層、移動平臺層、后端業(yè)務(wù)層、一體化平臺接入層、安全防護(hù)層和網(wǎng)絡(luò)硬件資源層六個(gè)方面.具體介紹如下[9]:
1) 移動應(yīng)用終端層: 主要是終端設(shè)備模塊, 包括了移動終端安全管理、終端設(shè)備服務(wù)、具體業(yè)務(wù)應(yīng)用和公共服務(wù)等功能.
2) 平臺層: 包括平臺管理模塊和平臺支撐模塊.平臺管理涵蓋了移動設(shè)備管理、日志管理、監(jiān)控分析、移動商店和IMS運(yùn)維監(jiān)控. 平臺支持涵蓋了數(shù)據(jù)同步、數(shù)據(jù)集成、業(yè)務(wù)適配和移動業(yè)務(wù)中間件容器.
3) 后端業(yè)務(wù)層: 所接入的業(yè)務(wù)系統(tǒng)對應(yīng)的業(yè)務(wù),為移動端提供業(yè)務(wù)數(shù)據(jù)和服務(wù)的支撐.
4) 一體化平臺層: 為移動應(yīng)用提供一體化平臺集成, 主要包括isc統(tǒng)一權(quán)限集成、安全接入平臺集成、ims運(yùn)維集成等. isc集成保證用戶是從國網(wǎng)的isc系統(tǒng)中獲取, 并進(jìn)行校驗(yàn). 安全接入平臺對服務(wù)進(jìn)行映射,保證了服務(wù)端的安全. ims運(yùn)維集成保證了實(shí)施運(yùn)維的信息監(jiān)控.
5) 安全防護(hù)層: 為移動應(yīng)用提供安全性的防護(hù),主要包括終端安全、數(shù)據(jù)安全、應(yīng)用安全和網(wǎng)絡(luò)安全方面進(jìn)行防護(hù).
圖1 移動平臺框架
其中, 平臺層的支撐模塊提供了業(yè)務(wù)中間件的運(yùn)行容器, 基于平臺業(yè)務(wù)中間件容器開發(fā)的業(yè)務(wù)中間件服務(wù)直接放入平臺層的中間件運(yùn)行容器即可運(yùn)行, 中間件服務(wù)具有跨終端的特點(diǎn), 即開發(fā)的中間件服務(wù)可以對應(yīng)不同的終端進(jìn)行使用, 解決了手機(jī)操作系統(tǒng)的發(fā)展不確定性的問題. 同時(shí), 平臺層的中間件運(yùn)行容器中可以運(yùn)行多個(gè)業(yè)務(wù)中間件服務(wù), 并進(jìn)行業(yè)務(wù)的相互交換, 滿足了業(yè)務(wù)系統(tǒng)的天然交互特性. 由于國網(wǎng)的相關(guān)信息都是內(nèi)部的信息, 具有保密性, 所以要通過安全防護(hù)層進(jìn)行防護(hù). 通過國網(wǎng)的專用終端來保證終端安全, 通過電力無線虛擬專網(wǎng)保證網(wǎng)絡(luò)的安全.
2.2 中間件服務(wù)開發(fā)
本文的業(yè)務(wù)中間件開發(fā)是基于國網(wǎng)的移動平臺的移動業(yè)務(wù)中間件容器進(jìn)行開發(fā)的. 移動業(yè)務(wù)中間件(插件)的開發(fā)需要遵循插件開發(fā)的相關(guān)規(guī)范, 通過對IDE的二次開發(fā), 實(shí)現(xiàn)了IDE進(jìn)行一鍵式創(chuàng)建移動業(yè)務(wù)中間件項(xiàng)目, 提高中間件開發(fā)的效率.
2.2.1 IDE中間件開發(fā)環(huán)境
手動搭建一個(gè)移動業(yè)務(wù)中間件項(xiàng)目需要添加特定的jar包和所需的配置文件等, 考慮到移動應(yīng)用開發(fā)的效率問題, 對Eclipse進(jìn)行二次開發(fā), 實(shí)現(xiàn)了一鍵式創(chuàng)建移動業(yè)務(wù)中間件項(xiàng)目. 如圖2所示, 通過一鍵創(chuàng)建中間件項(xiàng)目, 可以把所有需要的jar包添加到項(xiàng)目中, AppConfig.java中實(shí)現(xiàn)了默認(rèn)配置項(xiàng), 同時(shí)也可以手動添加其他所需要的配置項(xiàng). 減少了創(chuàng)建中間件項(xiàng)目環(huán)境的時(shí)間, 提高了移動應(yīng)用后臺的開發(fā)效率.
創(chuàng)建完中間件項(xiàng)目, 已自動加載所需jar包, 并創(chuàng)建了AppConfig.java、MainPlugin.java、plugin.xml和build.xml. 在一鍵創(chuàng)建的中間件項(xiàng)目中進(jìn)行開發(fā)的過程中, 為了提高開發(fā)的效率, 可以通過配置業(yè)務(wù)中間件的“pluginDirs”、“*.webRoot”和“*.class”置啟動項(xiàng)信息, 平臺能夠?qū)崿F(xiàn)業(yè)務(wù)中間件的熱部署, 以支持對業(yè)務(wù)中間件的快速開發(fā)和調(diào)試, 滿足了快速開發(fā)的時(shí)代需求. 開發(fā)完成后, 通過IDE的一鍵打包工具生成中間件部署包, 提高了中間件項(xiàng)目開發(fā)的效率.
圖2 創(chuàng)建業(yè)務(wù)中間件項(xiàng)目
圖3 生成業(yè)務(wù)中間件部署包
2.2.2 員工信息統(tǒng)計(jì)業(yè)務(wù)中間件實(shí)現(xiàn)
員工信息統(tǒng)計(jì)移動應(yīng)用前端基于html5混合開發(fā),后端基于移動業(yè)務(wù)中間件開發(fā), 生成移動應(yīng)用對應(yīng)部署jar包. 部署jar包上傳到移動平臺中間件容器中, jar包服務(wù)直接運(yùn)行生效. 同時(shí), 移動平臺支持移動應(yīng)用商店, 能夠把開發(fā)完成的移動app上傳到平臺移動商店中, 公司員工可以通過平臺客戶端門戶進(jìn)行下載安裝相關(guān)應(yīng)用. 設(shè)計(jì)框架分為移動app客戶端和移動業(yè)務(wù)中間件服務(wù)模塊.
考慮到app的相應(yīng)速度和流暢度員工信息統(tǒng)計(jì)app的客戶端基于html5進(jìn)行開發(fā), 移動平臺提供相關(guān)的UI界面接口. 客戶端app的登陸賬戶和密碼是根據(jù)平臺的統(tǒng)一身份認(rèn)證機(jī)制進(jìn)行管理. 員工信息統(tǒng)計(jì)app能夠通過移動平臺web端上傳到移動應(yīng)用管理模塊中, 在移動門戶app的移動商店中可以進(jìn)行下載和安裝.
員工信息統(tǒng)計(jì)移動應(yīng)用業(yè)務(wù)中間件服務(wù)模塊包括:中間件的開發(fā), 中間件打包, 中間件發(fā)布三個(gè)過程.數(shù)據(jù)庫采用oracle或者mysql數(shù)據(jù)庫, 采用ormaping的方式, 進(jìn)行數(shù)據(jù)的交互處理.
基于IDE一鍵式創(chuàng)建中間件項(xiàng)目, 如: 2.2.1節(jié)所述, 開發(fā)員工信息統(tǒng)計(jì)應(yīng)用對應(yīng)的業(yè)務(wù)中間件. 下面列舉了plugin.xml配置信息和基于ormaping的數(shù)據(jù)操作.
1) 配置信息
<plugin>
<class>middleware.MainPlugin</class>
<name>
Employee information statistics
</name>
<description>
員工信息統(tǒng)計(jì)移動業(yè)務(wù)中間件</description>
<author>guxuehai</author>
<version>1.0</version>
<date>DD/MM/YYYY</date>
<datasource>
jdbc:mwdbc:oracle://DataSource=Mobile
</datasource>
<spring-config-class>
middleware.config.AppConfig
</spring-config-class>
</plugin>
上述配置中, class: 業(yè)務(wù)中間件主類, 一般用于添加啟動或銷毀事件; name: 業(yè)務(wù)中間件名稱; description: 業(yè)務(wù)中間件描述; author: 作者信息; version: 中間件版本號; date: 中間件開發(fā)日期; datasource: 源數(shù)據(jù)庫連接配置, 為空表示使用移動平臺默認(rèn)數(shù)據(jù)源, 上述為數(shù)據(jù)源的配置方式, 也支持?jǐn)?shù)據(jù)庫直接方式.
2) 加載spring
@ImportResource({"/plugins/middleware/web/config/spr ing/**.xml"})
public class AppConfig {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean public DefaultServletHttpRequestHandler
createDefaultServletHttpRequestHandler() {
return new DefaultServletHttpRequestHandler();
}
}
3) 基于ormapping數(shù)據(jù)操作舉例
public boolean addMember(MobileGroupMember
mobileGroupMember) {
if (mobileGroupMember != null) {
boolean exists =
queryMemberID(mobileGroupMember.getMemberID()); if (!exists) {
ORMConnector ormConnector = new ORMConnector();
ormConnector.create(mobileGroupMember); } else {
return false;
}
}
return true;
}
public boolean
deleteMember(MobileGroupMember
mobileGroupMember) {
if
(!StringUtil.isNullOrEmpty(mobileGroupMember.getMe mberID())) {
boolean exists =
queryMemberID(mobileGroupMember.getMemberID()); if (exists) {
ORMConnector ormConnector = new ORMConnector();
ormConnector.delete(mobileGroupMember); return true;
}
}
return false;
}
業(yè)務(wù)中間件開發(fā)完成后通過IDE一鍵生成部署包,生成員工信息統(tǒng)計(jì)業(yè)務(wù)中間件部署jar包, 如圖5所示.
圖5 生成部署包
發(fā)布部署包可以直接把生成的jar包放入平臺服務(wù)的plugins目錄下, jar包會跟隨平臺一起運(yùn)行. 或者也可以通過移動平臺的插件上傳界面進(jìn)行插件上傳,并進(jìn)行插件的啟停操作. 基于移動業(yè)務(wù)中間件容器進(jìn)行移動業(yè)務(wù)中間件(插件)開發(fā), 能夠更快的提高移動應(yīng)用后臺服務(wù)的開發(fā)效率. 員工信息統(tǒng)計(jì)應(yīng)用基于移動平臺進(jìn)行開發(fā), 由于員工信息是公司內(nèi)部保密信息,通過安全防護(hù)層, 保證了終端安全和網(wǎng)絡(luò)的安全性,安全接入平臺對服務(wù)進(jìn)行映射, 保證了服務(wù)端的安全. ims運(yùn)維集成保證了實(shí)施運(yùn)維的信息監(jiān)控.
隨著信息化建設(shè)的不斷發(fā)展, 移動應(yīng)用已經(jīng)普及到各行各業(yè), 適用不同的應(yīng)用需求成為移動應(yīng)用開發(fā)的趨勢. 國家電網(wǎng)公司也信息化建設(shè)的挑戰(zhàn)中, 不斷研究和發(fā)展, 在移動應(yīng)用領(lǐng)域有著很大的需求. 本文提出了一種基于移動業(yè)務(wù)中間件容器的移動業(yè)務(wù)中間件開發(fā)方式, 運(yùn)用自定義的IDE進(jìn)行一鍵式中間件項(xiàng)目創(chuàng)建, 基于ormaping的數(shù)據(jù)操作, 一鍵式中間件打包, 以及快速發(fā)布服務(wù)jar包. 實(shí)現(xiàn)了基于業(yè)務(wù)中間件開發(fā)的員工信息統(tǒng)計(jì)的移動應(yīng)用后臺服務(wù), 提高了移動應(yīng)用后臺服務(wù)的開發(fā)和部署效率, 有利于提高公司的辦公業(yè)務(wù)的實(shí)時(shí)化和高效化, 提高公司整體的生產(chǎn)作業(yè)效率.
1 W3Schoo1. HTML5教程. http://www.w3school.com.cn/ html5/. [2010-10-28].
2 趙毅.跨平臺程序設(shè)計(jì)語言--Java.西安:西安電子科技大學(xué)出版社,2006.
3 Lunny A. PhoneGap Beginner’s Guide. Packt Publishing, 2011: 1–15.
4 Jasnowski M. 蓋江南譯.Java,Xml和Web 服務(wù)寶典.北京:電子工業(yè)出版社,2002.
5 http://www.baike.com/wiki/移動中間件.
6 Edwards J, McCurley KS, Tomlin JA. An adaptive model for optimizing performance of an incremental web crawler. Proc. of the Tenth Conference on World Wide Web. Hong Kong. Elsevier Science. 2001.106–113.
7 Raatikainen K. Middleware for mobile applications beyond 3G. smart. Networks. IFIP TC6 /WG6. 7. Seventh International Conference on Intelligence in Networks (Smart Net 2002). 2002. 31– 35.
8 王英華.移動計(jì)算中間件研究.科技信息,2010,26(16):194–198.
9 顧學(xué)海,胡牧,蔣厚明,王俊.基于html5的混合移動應(yīng)用開發(fā).計(jì)算機(jī)系統(tǒng)應(yīng)用,2016,25(5):236–239.
Plugin Development Based on Middleware Container Business
GU Xue-Hai, HU Mu, JIANG Hou-Ming, WANG Jun, CAO Hai-Tao
(Nari Group Corporation (State Grid Electric Power Research Institute), Nanjing 210000, China)
With the continuous development and updateof mobile intelligent device, mobile application is also facing unprecedented development. At the same time, the mobile application extended to the corporate office. In the information construction of StateGrid corporation, mobile Internet is also an important aspect. The mobile application development processbasing on mobile platform, aiming to the background services for mobile application development, operation and deployment problems, basing on the middleware container plugin development is came up, realized the rapid development and deployment of mobile application service, improved the efficiency of mobile application development and deployment of operation.
mobile application; middleware container; mobile middleware
2016-07-26;收到修改稿時(shí)間:2016-09-23
10.15888/j.cnki.csa.005730