郄小明 閆江華
(中國電子科技集團公司第五十四研究所 河北省石家莊市 050081)
近年來,隨著移動互聯網技術的高速發展,智能終端已經成為生活和工作中不可或缺的重要工具,向用戶提供針對不同應用場景需求的高效應用[1]。同時,智能終端的操作系統種類也越來越多,主要包括IOS、Android、Windows Phone 等,國產移動操作系統如TDOS、元心、麒麟等。一款移動應用需要同時覆蓋以上幾種平臺,則必須要針對不同的平臺分別進行研發[2],這就帶來了移動應用開發復雜、開發周期長、開發效率低、風格統一困難和運維成本大等諸多問題。針對這種情況,滿足“一次開發,多個平臺使用”的應用跨平臺開發技術成為開發者的理想選擇。
本文通過移動應用的對比分析,提出了一種跨平臺應用開發架構,以滿足通用及特定場景下應用需求,并對未來移動應用的發展提出自己的看法。
目前應用程序主要分為三類:原生應用(Native App)、網頁應用(Web APP)和混合模式移動應用(Hybrid App)。原生應用即開發者采用操作系統所提供的一套標準接口,不同的操作系統會提供不同的開發語言與標準接口,原生應用有很強的交互性和可拓展性;網頁應用指采用Html5 語言寫出的生存在瀏覽器中的應用;混合應用指半原生半Web 的混合類應用,由原生提供統一的API給JavaScript 調用,實際的主要邏輯有Html 和JavaScript 來完成,最終是放在Webview 中呈現,只需要寫一套代碼即可達到跨平臺效果[3]。三類應用對比如表1所示。
綜合分析,混合應用兼具原生應用擁有良好交互體驗的優勢和網頁應用跨平臺的優勢[4],一方面,開發者可以充分利用現代移動設備所提供的全部不同的特性和功能;另一方面,使用 Web 語言編寫的所有代碼都可以在不同的移動平臺之間共享,使得開發和日常維護過程變得集中式、更簡短、更經濟高效。
借鑒混合應用開發的思想和優勢,本文提出一種支持跨平臺的應用架構,如下圖所示。應用采用分層設計思想,每層負責不同的職能,自底向上分為系統層、中間層和呈現層。移動終端跨平臺應用開發方向主要分為網絡應用開發和本地應用開發,針對方向的差別使用不同的編程語言[5]。從開發人員角度分析,開發語言可分為“美工”、“前端編程語言”和“后臺編程語言”三大類。 呈現層對應“美工”和“前端編程語言”,處理本地應用部分,重點關注應用界面的美觀性和用戶體驗。中間層對應“后臺編程語言”,處理網絡應用和本地應用部分,重點設計應用整體結構,使應用可以運行在操作系統之上。開發人員可以根據每層需求,選擇專用語言開發,從而解決開發手段復雜多樣的問題。如圖1。

表1

圖1

圖2
系統層具備原生系統的功能調用,主要包括了手機相冊、通訊錄、攝像頭、地理位置、網絡狀態等一些手機本地調用處理等,原生系統如Android、IOS、元心和TDOS 等操作系統。
中間層包括技術框架和開放服務兩部分。技術框架是開發者根據應用場景選擇的技術平臺,如VUE,對呈現層提供豐富的UI組件,同時把系統層一些原生功能進行二次封裝,對上提供統一JavaScript 調用。開放服務指開發者根據業務需求構建的具備特定功能的SDK。
主流的跨移動平臺方式包含跨平臺引擎驅動和跨平臺應用編譯。開放服務重點采用C/C++語言實現,目前各移動操作系統均支持C/C++語言開發的第三方庫,開發者重點解決不同操作系統下開放服務的編譯問題,以此滿足跨平臺要求。
下面提出一種面向C/C++的通用SDK 服務架構。如下圖所示,自底向上分為支撐層、組件層、邏輯處理層和接口抽象層。如圖2所示。
(1)支撐層支持多種操作系統環境下的統一抽象接口操作,屏蔽操作系統在C/C++層差異,使組件層軟件與底層的操作系統實現分離,降低操作系統對軟件開發和維護的影響。
(2)組件層包含如JSON 組解、日志、存儲等通用組件,ZMQ、SIP、HTTP 等通信組件,媒體處理等擴展組件,也可以支持其他C/C++組件。這些組件屏蔽內部實現細節,對邏輯處理層提供便捷的開發API。
(3)邏輯處理層根據具體業務需求,調用組件層API 接口進行相關業務組合處理,并對接口抽象層提供統一API,如通過組合SIP、HTTP 協議組件,實現如即時消息、狀態呈現、和文件傳輸等統一通信業務。
(4)接口抽象層突破傳統API 調用方式,實現前臺呈現與開放服務的解耦,將邏輯處理層提供API 封裝,對前臺呈現提供統一編程可擴展的JSON 格式的JavaScript 調用接口;同時將前臺呈現調用的JSON 接口解析,調用邏輯處理層API 實現相應功能。JSON 數據格式具有相對簡單、易封裝解析、擴展性強、讀寫效率高、解析庫多等諸多優點,為呈現層與開放服務之間提供高效的交互方式。
基于C/C++的第三方組件豐富多樣,開發者也可根據功能需求不斷調整,選擇并開發所需組件及業務處理邏輯,使得開放服務具備良好的復用性和擴展性。
混合應用按照混合模式可分為重架構混合模式和輕架構混合模式?!爸鼗臁奔軜嬕蕾嘚ative UI 的混合框架,按照“Web 不夠,就Native 來湊”的核心思路,提升交互體驗,但也帶來了顯著缺點:Web 和Native 技術的交叉混雜讓開發者的編程和調試都很不方便,也無法滿足跨平臺要求。“輕混”架構堅持UI 部分必須用純Web技術,完全采用H5 技術;在底層的設備接口上,JavaScript 無法完成的原生部分,可以采用Native 技術來彌補,也必須堅持Native技術不去侵入UI。“輕混”架構才是真正的HTML5 應用架構,在技術上更輕量、成本更低、也更容易推廣,真正做到只需一次開發跨平臺發布,是混合應用技術發展的必然方向。
按照“輕混”架構設計理念,呈現層采用純Web 技術實現,呈現邏輯由Html 和JavaScript 完成,最終在WebView 中顯示。通過調用開放服務提供的接口實現與后臺服務器、與其他應用之間的交互,并完成相關數據的本地存儲。從開發層面實現“一次開發,多處運行”的機制,成為真正適合跨平臺的開發。
大多數的移動應用會依賴于后臺的Web 服務來實現大部分的業務邏輯,對網絡依賴嚴重。該架構可以將功能相關業務邏輯在本地開放服務中實現,呈現業務所需媒體文件封裝到App 代碼中,存儲在設備本地。從而避免對網絡環境的依賴,實現特定場景無網絡環境下混合應用的使用。采用該架構呈現層開發者只需掌握Web相關技術即可,中間層開發者只需掌握開放服務相關技術,降低了同一款應用開發者需針對多個平臺掌握多種開發技術的復雜度。
混合模式開發的移動應用相對原生應用而言依然存在不足,HTML5 在調用終端硬件方面的能力還不是很強,同時受限于WebView的渲染效率,體驗稍有欠缺,同時在應用調試、視頻編解碼、跨平臺兼容性等方面還存在問題。開發者必須充分利用HTML、CSS 和JavaScript 三個技術,做好相應優化,才可構建具有良好用戶體驗的應用,這也對開發者也提出相應的技術要求。
隨著移動終端的不斷發展,移動終端跨平臺應用開發逐漸成為開發者的設計目標。伴隨終端硬件處理能力、Web 技術、系統開放性等不斷發展,以Web 為主的混合應用終將成為移動終端應用發展的主流模式,使用戶可以以更快捷、更低成本的方式來享受各類應用提供的服務。