Hybrid App開發

現在移動應用開發主流都採用Hybrid App模式,例如淘寶、微信、手機QQ、攜程、去哪兒、手機百度等都使用了Hybrid APP開發模式。

一、   hybrid App的三種解決方案

方案一:使用PhoneGap、AppCan之類的中間件,以WebView作爲用戶界面層,以Javascript作爲基本邏輯,以及和中間件通訊,再由中間件訪問底層API的方式,進行應用開發。這種架構一般會非常依賴WebView層的性能。

方案二:使用AdobeAir、RubyMotion、Appcelerator或者是Xamarin這種非官方語言的工具,打包成原生應用的方式開發。爲什麼筆者會將它們定義 爲HybridApp,主要是它們並沒有很單純地使用原生提供的語言進行開發,而是通過對開發者提供友好的開發工具,並折中地把這種開發語言轉換成原生語言,最終打包出整個應用,所以也屬於混合應用範疇。

方案三:在開發原生應用的基礎上,嵌入WebView但是整體的架構使用原生應用提供,一般這樣的開發由Native開發人員和Web前端開發人員 組成。Native開發人員會寫好基本的架構以及API讓Web開發人員開發界面以及大部分的渲染。保證到交互設計,以及開發都有一個比較折中的效果出來,優化得好也會有很棒的效果。(當年Facebook Three20就使用該方案)

目前主流的hybrid app都是使用移動平臺自帶的webview來實現hybrid開發。

 

二、   hybrid App中native和web的分配

native和web具體的分配方式大致是:

Native:用戶體驗要求高、業務變動很小(如首頁)、性能要求高等;

Web:業務變化頻繁(如廣告)、性能要求低、展示性內容(如用戶個人中心)等。

在一個hybridApp中,native和web一般是細化到每個頁面上的,在一個頁面中可能一部分是web實現,一部分是native實現。

以首頁爲例,首頁的功能性內容都是由native實現完成,而廣告這種內容變化頻繁的內容由web完成。

 

在開發一個hybridApp時,需要考慮離線、安全、性能、與Native互調、擴展等因素。

離線:需要考慮到哪些內容是離線資源,哪些必須請求服務器H5;

安全:需要考慮信息安全,哪些可以在h5上完成,哪些必須由native實現。

三、   Hybrid App的一些具體應用

1. 攜程網網絡架構:

由於攜程業務衆多,開發資源導致無法全部使用Native來實現業務邏輯,因此有相當一部分頻道基於Hybrid實現。網絡通訊屬於基礎&業務框架層中基礎設施的一部分,爲App提供統一的網絡服務:

  • Native端的網絡服務

Native模塊是攜程的核心業務模塊(酒店、機票、火車票、攻略等),Native模塊的網絡服務主要通過TCP連接實現,而非常見的Restful HTTP API那種HTTP連接,只有少數輕量級服務使用HTTP接口作爲補充。
    
TCP連接網絡服務模塊使用了長連接+短連接機制,即有一個長連接池保持一定數目長連接,用於減少每次服務額外的連接,服務完成後會將該連接Socket放回長連接池,繼續保持連接狀態(一段時間空閒後會被回收);短連接作爲補充,每次服務完成後便會主動關閉連接。
    
TCP網絡服務的Payload使用的是自定義的數據及序列化協議;HTTP服務的Payload比較簡單,即常見的JSON數據格式。

  • Hybrid端的網絡服務

Hybrid模塊由於是在WebView中展示本地或者直連的H5頁面,頁面邏輯發起的網絡服務都是通過系統WebView的HTTP請求實現的。少量業務場景(需要加密和支付等)以Hybrid橋接接口形式的Native TCP通道來完成網絡服務。

2.去哪兒網:

去哪兒APP通過攔截器區分本地資源還是網絡資源,如果是本地資源已經包含則請求本地資源,接口級則去請求網絡資。當本地資源需要更新時則先更新本地資源,然後在訪問。

通過橋去鏈接插件的方式訪問native,插件的實現是通過配置方式實現不同的native的控制。

3.淘寶APP:

淘寶天貓這樣的超大型App,完全用Native是很難的,也是不現實的,業務邏輯太複雜,目前天貓是20% native +70 H5,search,detail,交易鏈路(購物車+下單)是完全native化的,其他的都是Webview。

1)H5的優勢在於隨時發佈,無需修改native代碼,滿足了業務靈活配置的需求。webview作爲移動端H5容器,在手機客戶端顯得尤爲重要

淘寶天貓的webview已經高度模塊化,各個業務模塊之間高度解耦,爲此也做了很多的優化,比如:

1)剝離webview邏輯,拆分webview爲單獨模塊。

2)去掉phoneGap,改用自定義簡化框架。

3)統一提供對外調用接口,接口粒度細分多個維度,提供activity,webview等層級接口,滿足各種業務方需求。

4)融合手淘windvane,既支持天貓特有的H5邏輯,又提供跨BU前端H5統一方案。

參考資料:

Hybrid APP開發模式和比較:http://mobile.51cto.com/web-460529.htm

開發模式的架構比較:http://tech.163.com/12/0619/20/84CUGCEA00094L5O.html

去哪兒網X1移動前端一體化解決方案:http://ued.qunar.com/mobile/page/  

攜程網絡架構優化;http://www.infoq.com/cn/articles/how-ctrip-improves-app-networking-performance

 

 

發佈了87 篇原創文章 · 獲贊 13 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章