四川中電啟明星信息技術有限公司 張海賓
基于C/S架構客戶端嵌入B/S架構系統的設計與實現
四川中電啟明星信息技術有限公司 張海賓
針對B/S架構的Web應用程序對用戶個性化的操作系統環境的訪問權限較低的需求,提出基于C/S架構的客戶端嵌入瀏覽器的系統的設計方案。結合C/S架構客戶端、B/S架構Web應用的信息交互的特點,探討客戶端系統的開發方法。介紹了系統架構設計與客戶端設計,然后采用Java技術開發出Web服務器端軟件、C++應用程序開發框架QT開發PC客戶端軟件。基于C/S架構客戶端嵌入瀏覽器的系統已經完成,結果表明解決問題的措施可行,系統為用戶提供了便利。
C/S架構;B/S架構; QWebkit;NW.js;Electron;XP SP2
C/S架構客戶端應用從Windows誕生以來,一直占領著用戶的桌面。隨著90年代末期互聯網的爆發使得Web應用成為了主流,它的輕量級、易用性、用戶交互界面更友好,使得它逐漸取代了客戶端在用戶桌面的地位,目前互聯網公司及企業內部建立的業務系統都是以Web應用為主,它對用戶環境的要求更低,依賴性更小,它主要依賴于用戶使用的瀏覽器,瀏覽器的局限性是當需要調用用戶操作系統的功能時,如:獲取CPU使用情況、獲取用戶操作系統環境信息、用戶軟件安裝情況、訪問用戶注冊表信息等功能時,瀏覽器則無權去獲取這些信息。
目前國內優秀的平臺類系統普遍采用客戶端模式,其客戶端應用均采用C++語言進行開發,如國內的360(C++)、迅雷(Microsoft Visual C++開發、BLOT界面引擎)、騰訊的QQ(Microsoft Visual C++開發)、國外的OICQ(C++)等軟件,其產品中均集成了Webkit或Chrome內核瀏覽器的完成部分B/S架構的重要功能,如:QQ秀、360的軟件管理,并且已經得到了廣泛的應用。

表1 C/S架構、B/S架構優缺點對比
本文從瀏覽器自動化入手,研究基于C/S架構客戶端嵌入B/S架構的業務系統的相關開發技術,旨在提高瀏覽器在客戶端運行時提高權限;實現B/S架構的業務系統通過C/S架構客戶端嵌入的瀏覽器進行通信,實現B/S架構業務系統能夠達到C/S架構客戶端的用戶體驗效果,根據需求,對系統進行分析,由以下工作組成:
(1)C/S架構客戶端操作系統最低支持操作系統版本 XP SP2。
(2)支持使用客戶端本地安裝的IE或客戶端內置的Chrome內核瀏覽器打開業務系統集成的系統。
(3)實現用戶登錄狀態與原有運行IE的 用戶狀態隔離。
(4)支持使用Chrome內核瀏覽器加載業務系統。
(5)獲取用戶本地安裝軟件信息,獲取客戶端的CPU、磁盤占用情況。

圖1 統一工作臺系統架構圖
系統架構采用C/S架構客戶端嵌入B/S架構的業務系統。業務系統主頁采用客戶端嵌入的Chrome內核瀏覽器呈現,業務系統通過Chrome內核瀏覽器定義的Javascript對象進行通信,來進行信息交互。

圖2 統一工作臺系統開發框架
系統開發框架客戶端采用C++應用程序開發框架QT進行開發,多分辨率支持,支持Windows XP SP2,相較傳統WinForm技術,界面設計更美觀,IE瀏覽器自動化采用微軟COM對象提供的接口、Chrome內核瀏覽器采用QT開發框架的QWebkit組件。B/S服務器端業務系統采用Java語言的SSH框架進行開發,后臺數據庫采用Oracle數據庫。

圖3 軟件功能結構圖
隨著互聯網應用的發展,瀏覽器的市場占有率也在不斷發生變化,Chrome瀏覽器后來居上,市場占有率不斷增加,但是IE有著悠久的歷史,眾多企業內部系統都以支持IE為標準建成,還有很多插件僅支持特定版本的IE,限于以上需求在此采用IE COM對象使用用戶本地IE瀏覽器訪問業務系統。“InternetExplorer.Application”是微軟為開發者提供的InternetExplorer對象,可以通過它來自動化控制Windows Internet Explorer的實例,該對象提供了以下接口:

通過調用以上接口,實現對IE的自動化控制,完成IE的自動跳轉、自動打開新窗口、自動填寫表單等系統需要的功能。
B/S系統的前端頁面為單頁面應用程序,采用HTML5開發,交互性較強,鑒于IE低版本對HTML5支持較差,所以采用Chrome內核瀏覽器。Chrome瀏覽器最早是Google基于開源項目WebKit的分支Blink進行的繼續開發的,QWebkit是QT封裝的Webkit內核瀏覽器組件,為調用者提供了豐富的調用接口。
對于目前比較成熟客戶端內嵌瀏覽器的開發框架NW.js、Electron都是基于Chrome內核的瀏覽器進行開發,但它們都存在不支持Windows XP操作系統,基于本項目的需求,故未采用以上開發框架進行開發。
本項目采用的是QWebkit組件,進行的開發,同時對該組件一些不完善的接口進行在封裝和完善,使其對HTML5的支持更好。
C/S客戶端與B/S業務系統需要進行信息交互,如客戶端版本信息、客戶電腦配置信息、客戶端運行資源占用情況、客戶機軟件安裝情況、調用客戶機器安裝軟件等等,均需要C/S客戶端與B/S業務系統進行信息交互。信息交互的實現方式采用客戶端定義 Javascript全局對象,B/S架構業務系統通過調用該對象定義的方法,向客戶端傳遞消息。客戶端可以通過直接調用B/S業務系統的Javascript方法向業務系統傳遞消息,業務系統收到消息后執行相應處理。
C/S發送消息到B/S,消息內容如下:
(1)發送客戶機本地軟件安裝列表;
(2)發送客戶端當前版本信息;
(3)發送登錄用戶信息;
(4)發送用戶退出信息;
(5)發送客戶機安裝的操作系統信息、客戶端資源占用信息CPU、磁盤等。
B/S發送消息到C/S,消息內容如下:
(1)發送打開某個本機已安裝軟件信息;
(2)發送設置客戶端開機自啟動信息;
(3)發送使用IE打開業務系統信息;
(4)發送使用Chrome打開業務系統信息;
(5)發送使用IE跳轉到指定URL信息。
針對B/S架構的Web應用程序對用戶個性化的操作系統環境的訪問權限較低的需求,結合IE自動化、Chrome內核瀏覽器封裝技術,本文設計并實現基于C/S架構客戶端嵌入B/S架構系統。系統采用C++應用程序開發框架QT開發C/S架構客戶端,Java開發B/S架構業務系統,使用操作系統IE COM對象實現IE自動化,使用Chrome內核瀏覽器展現業務系統并實現C/S與B/S通信。系統上線后測試后發現整個系統運行流暢,在實際應用過程中可以有效地提高B/S業務系統的用戶體驗,功能滿足用戶提出的開發需求。
[1]https://msdn.microsoft.com/zh-cn/library/aa752084(v=vs.85).aspx.
[2]http://www.awesomium.com/support.