四川中電啟明星信息技術(shù)有限公司 張海賓
基于C/S架構(gòu)客戶端嵌入B/S架構(gòu)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
四川中電啟明星信息技術(shù)有限公司 張海賓
針對(duì)B/S架構(gòu)的Web應(yīng)用程序?qū)τ脩魝€(gè)性化的操作系統(tǒng)環(huán)境的訪問權(quán)限較低的需求,提出基于C/S架構(gòu)的客戶端嵌入瀏覽器的系統(tǒng)的設(shè)計(jì)方案。結(jié)合C/S架構(gòu)客戶端、B/S架構(gòu)Web應(yīng)用的信息交互的特點(diǎn),探討客戶端系統(tǒng)的開發(fā)方法。介紹了系統(tǒng)架構(gòu)設(shè)計(jì)與客戶端設(shè)計(jì),然后采用Java技術(shù)開發(fā)出Web服務(wù)器端軟件、C++應(yīng)用程序開發(fā)框架QT開發(fā)PC客戶端軟件?;贑/S架構(gòu)客戶端嵌入瀏覽器的系統(tǒng)已經(jīng)完成,結(jié)果表明解決問題的措施可行,系統(tǒng)為用戶提供了便利。
C/S架構(gòu);B/S架構(gòu); QWebkit;NW.js;Electron;XP SP2
C/S架構(gòu)客戶端應(yīng)用從Windows誕生以來(lái),一直占領(lǐng)著用戶的桌面。隨著90年代末期互聯(lián)網(wǎng)的爆發(fā)使得Web應(yīng)用成為了主流,它的輕量級(jí)、易用性、用戶交互界面更友好,使得它逐漸取代了客戶端在用戶桌面的地位,目前互聯(lián)網(wǎng)公司及企業(yè)內(nèi)部建立的業(yè)務(wù)系統(tǒng)都是以Web應(yīng)用為主,它對(duì)用戶環(huán)境的要求更低,依賴性更小,它主要依賴于用戶使用的瀏覽器,瀏覽器的局限性是當(dāng)需要調(diào)用用戶操作系統(tǒng)的功能時(shí),如:獲取CPU使用情況、獲取用戶操作系統(tǒng)環(huán)境信息、用戶軟件安裝情況、訪問用戶注冊(cè)表信息等功能時(shí),瀏覽器則無(wú)權(quán)去獲取這些信息。
目前國(guó)內(nèi)優(yōu)秀的平臺(tái)類系統(tǒng)普遍采用客戶端模式,其客戶端應(yīng)用均采用C++語(yǔ)言進(jìn)行開發(fā),如國(guó)內(nèi)的360(C++)、迅雷(Microsoft Visual C++開發(fā)、BLOT界面引擎)、騰訊的QQ(Microsoft Visual C++開發(fā))、國(guó)外的OICQ(C++)等軟件,其產(chǎn)品中均集成了Webkit或Chrome內(nèi)核瀏覽器的完成部分B/S架構(gòu)的重要功能,如:QQ秀、360的軟件管理,并且已經(jīng)得到了廣泛的應(yīng)用。
表1 C/S架構(gòu)、B/S架構(gòu)優(yōu)缺點(diǎn)對(duì)比
本文從瀏覽器自動(dòng)化入手,研究基于C/S架構(gòu)客戶端嵌入B/S架構(gòu)的業(yè)務(wù)系統(tǒng)的相關(guān)開發(fā)技術(shù),旨在提高瀏覽器在客戶端運(yùn)行時(shí)提高權(quán)限;實(shí)現(xiàn)B/S架構(gòu)的業(yè)務(wù)系統(tǒng)通過C/S架構(gòu)客戶端嵌入的瀏覽器進(jìn)行通信,實(shí)現(xiàn)B/S架構(gòu)業(yè)務(wù)系統(tǒng)能夠達(dá)到C/S架構(gòu)客戶端的用戶體驗(yàn)效果,根據(jù)需求,對(duì)系統(tǒng)進(jìn)行分析,由以下工作組成:
(1)C/S架構(gòu)客戶端操作系統(tǒng)最低支持操作系統(tǒng)版本 XP SP2。
(2)支持使用客戶端本地安裝的IE或客戶端內(nèi)置的Chrome內(nèi)核瀏覽器打開業(yè)務(wù)系統(tǒng)集成的系統(tǒng)。
(3)實(shí)現(xiàn)用戶登錄狀態(tài)與原有運(yùn)行IE的 用戶狀態(tài)隔離。
(4)支持使用Chrome內(nèi)核瀏覽器加載業(yè)務(wù)系統(tǒng)。
(5)獲取用戶本地安裝軟件信息,獲取客戶端的CPU、磁盤占用情況。
圖1 統(tǒng)一工作臺(tái)系統(tǒng)架構(gòu)圖
系統(tǒng)架構(gòu)采用C/S架構(gòu)客戶端嵌入B/S架構(gòu)的業(yè)務(wù)系統(tǒng)。業(yè)務(wù)系統(tǒng)主頁(yè)采用客戶端嵌入的Chrome內(nèi)核瀏覽器呈現(xiàn),業(yè)務(wù)系統(tǒng)通過Chrome內(nèi)核瀏覽器定義的Javascript對(duì)象進(jìn)行通信,來(lái)進(jìn)行信息交互。
圖2 統(tǒng)一工作臺(tái)系統(tǒng)開發(fā)框架
系統(tǒng)開發(fā)框架客戶端采用C++應(yīng)用程序開發(fā)框架QT進(jìn)行開發(fā),多分辨率支持,支持Windows XP SP2,相較傳統(tǒng)WinForm技術(shù),界面設(shè)計(jì)更美觀,IE瀏覽器自動(dòng)化采用微軟COM對(duì)象提供的接口、Chrome內(nèi)核瀏覽器采用QT開發(fā)框架的QWebkit組件。B/S服務(wù)器端業(yè)務(wù)系統(tǒng)采用Java語(yǔ)言的SSH框架進(jìn)行開發(fā),后臺(tái)數(shù)據(jù)庫(kù)采用Oracle數(shù)據(jù)庫(kù)。
圖3 軟件功能結(jié)構(gòu)圖
隨著互聯(lián)網(wǎng)應(yīng)用的發(fā)展,瀏覽器的市場(chǎng)占有率也在不斷發(fā)生變化,Chrome瀏覽器后來(lái)居上,市場(chǎng)占有率不斷增加,但是IE有著悠久的歷史,眾多企業(yè)內(nèi)部系統(tǒng)都以支持IE為標(biāo)準(zhǔn)建成,還有很多插件僅支持特定版本的IE,限于以上需求在此采用IE COM對(duì)象使用用戶本地IE瀏覽器訪問業(yè)務(wù)系統(tǒng)?!癐nternetExplorer.Application”是微軟為開發(fā)者提供的InternetExplorer對(duì)象,可以通過它來(lái)自動(dòng)化控制Windows Internet Explorer的實(shí)例,該對(duì)象提供了以下接口:
通過調(diào)用以上接口,實(shí)現(xiàn)對(duì)IE的自動(dòng)化控制,完成IE的自動(dòng)跳轉(zhuǎn)、自動(dòng)打開新窗口、自動(dòng)填寫表單等系統(tǒng)需要的功能。
B/S系統(tǒng)的前端頁(yè)面為單頁(yè)面應(yīng)用程序,采用HTML5開發(fā),交互性較強(qiáng),鑒于IE低版本對(duì)HTML5支持較差,所以采用Chrome內(nèi)核瀏覽器。Chrome瀏覽器最早是Google基于開源項(xiàng)目WebKit的分支Blink進(jìn)行的繼續(xù)開發(fā)的,QWebkit是QT封裝的Webkit內(nèi)核瀏覽器組件,為調(diào)用者提供了豐富的調(diào)用接口。
對(duì)于目前比較成熟客戶端內(nèi)嵌瀏覽器的開發(fā)框架NW.js、Electron都是基于Chrome內(nèi)核的瀏覽器進(jìn)行開發(fā),但它們都存在不支持Windows XP操作系統(tǒng),基于本項(xiàng)目的需求,故未采用以上開發(fā)框架進(jìn)行開發(fā)。
本項(xiàng)目采用的是QWebkit組件,進(jìn)行的開發(fā),同時(shí)對(duì)該組件一些不完善的接口進(jìn)行在封裝和完善,使其對(duì)HTML5的支持更好。
C/S客戶端與B/S業(yè)務(wù)系統(tǒng)需要進(jìn)行信息交互,如客戶端版本信息、客戶電腦配置信息、客戶端運(yùn)行資源占用情況、客戶機(jī)軟件安裝情況、調(diào)用客戶機(jī)器安裝軟件等等,均需要C/S客戶端與B/S業(yè)務(wù)系統(tǒng)進(jìn)行信息交互。信息交互的實(shí)現(xiàn)方式采用客戶端定義 Javascript全局對(duì)象,B/S架構(gòu)業(yè)務(wù)系統(tǒng)通過調(diào)用該對(duì)象定義的方法,向客戶端傳遞消息??蛻舳丝梢酝ㄟ^直接調(diào)用B/S業(yè)務(wù)系統(tǒng)的Javascript方法向業(yè)務(wù)系統(tǒng)傳遞消息,業(yè)務(wù)系統(tǒng)收到消息后執(zhí)行相應(yīng)處理。
C/S發(fā)送消息到B/S,消息內(nèi)容如下:
(1)發(fā)送客戶機(jī)本地軟件安裝列表;
(2)發(fā)送客戶端當(dāng)前版本信息;
(3)發(fā)送登錄用戶信息;
(4)發(fā)送用戶退出信息;
(5)發(fā)送客戶機(jī)安裝的操作系統(tǒng)信息、客戶端資源占用信息CPU、磁盤等。
B/S發(fā)送消息到C/S,消息內(nèi)容如下:
(1)發(fā)送打開某個(gè)本機(jī)已安裝軟件信息;
(2)發(fā)送設(shè)置客戶端開機(jī)自啟動(dòng)信息;
(3)發(fā)送使用IE打開業(yè)務(wù)系統(tǒng)信息;
(4)發(fā)送使用Chrome打開業(yè)務(wù)系統(tǒng)信息;
(5)發(fā)送使用IE跳轉(zhuǎn)到指定URL信息。
針對(duì)B/S架構(gòu)的Web應(yīng)用程序?qū)τ脩魝€(gè)性化的操作系統(tǒng)環(huán)境的訪問權(quán)限較低的需求,結(jié)合IE自動(dòng)化、Chrome內(nèi)核瀏覽器封裝技術(shù),本文設(shè)計(jì)并實(shí)現(xiàn)基于C/S架構(gòu)客戶端嵌入B/S架構(gòu)系統(tǒng)。系統(tǒng)采用C++應(yīng)用程序開發(fā)框架QT開發(fā)C/S架構(gòu)客戶端,Java開發(fā)B/S架構(gòu)業(yè)務(wù)系統(tǒng),使用操作系統(tǒng)IE COM對(duì)象實(shí)現(xiàn)IE自動(dòng)化,使用Chrome內(nèi)核瀏覽器展現(xiàn)業(yè)務(wù)系統(tǒng)并實(shí)現(xiàn)C/S與B/S通信。系統(tǒng)上線后測(cè)試后發(fā)現(xiàn)整個(gè)系統(tǒng)運(yùn)行流暢,在實(shí)際應(yīng)用過程中可以有效地提高B/S業(yè)務(wù)系統(tǒng)的用戶體驗(yàn),功能滿足用戶提出的開發(fā)需求。
[1]https://msdn.microsoft.com/zh-cn/library/aa752084(v=vs.85).aspx.
[2]http://www.awesomium.com/support.