當前位置:
首頁 > 最新 > 網易MC:H5容器技術方案

網易MC:H5容器技術方案

Native開發原生應用是手機操作系統廠商(目前主要是蘋果的iOS和google的Android)對外界提供的標準化的開發模式,他們對於native開發提供了一套標準化實現和優化方案。但是他們存在一些硬傷,比如App的發版周期偏長、有時無法跟上產品的更新節奏;靈活性差,如果有較大的方案變更,需要發版才能解決;如果存在bug,在當前版本修復的難度比較大(iOS的JSPatch方案和Android的Dex修復方案);需要根據不同的平台寫不同的代碼,iOS主要為object-c和swift,android為Java。

APP端的迭代過程中的最後一步,需要提交版本到應用市場(AppStore或安卓各市場)。APP端的需求中有一部分會有更新頻繁、業務需求動態等特點,需要用戶能夠及時更新。該場景下,H5能夠滿足此類特性的需求(更快、更簡便的服務,代碼可高度重用,服務發布方便等優點),能夠做到快速承載業務的更新,多端開發統一。因此現在越來越多的公司使用H5+Native的Hybrid模式來開發APP。

本文通過設計一種H5容器,在完成H5頁面的遠端載入之外,提供對H5頁面訪問加速、提高安全性的支持。同時設計H5的模版化,離線化完成H5頁面訪問加速;還有Native與H5的請求委託,將鑒權信息等部分介面委託至APP端,增加安全性。

方案概述

1. H5頁面模版化、離線化

H5頁面分為靜態、動態數據部分;目的是可以通過在APP端預先載入模版(靜態資源通過腳本自動打包到應用,首次安裝解壓處理),只請求動態數據部分,減少並發的請求數量,提高速度。

2. 模版打包

H5頁面除了動態數據部分,其他內容包括js、css、img等靜態資源預先被打包成模版包,同時APP端在合適的時機進行下載並緩存在本地。如果模版更新頻繁、全包的尺寸較大,應將公共資源單獨抽離,並採用增量包更新方式。

3. 模版更新策略

更新時機:推送通知(客戶端靜默更新)、app啟動、app回到 前台、定時周期性檢測更新、添加對象作為資源更新的監聽器更新模版,提供多維度的更新策略。(後期考慮基於長連接的消息推送更新模版)

更新策略:遠程模版配置和本地模版配置在模版版本和模版有效期上的比較。同時增加對模版的md5校驗,防止資源的篡改。

4. 資源攔截

H5容器載入模版,會載入引用的js、css、img等文件,H5容器需要對該類文件進行攔截,返回資源包中對應的文件;為了找到資源包中對應的文件,需要提供一份靜態資源的映射配置表。

5. JsBridge通道

實現Native與H5頁面的交互:業務協議介面的定義,管理頁 面切換,與伺服器的數據交互,APP端通用功能等。Native與H5的請求委託,將鑒權信息等部分介面委託至APP端,增加安全性。

6. 日誌統計

包括H5性能指標,模版包的更新成功率,以及本地模版和遠程頁面訪問的佔比,和一些異常日誌的收集,然後統計上報,提供完善的日誌統計。

詳細方案

1. 主流程

H5容器方案包括兩個主流程:

·模版更新流程:包括後端cms上傳及app同步

·模版訪問流程:設計App識別並訪問模版,H5與JS交互的流程

發布流程

模版發布流程如下圖所示:

·確定模版更新,並通知到QA

·QA測試模版包,確認無誤

·提交發布測試人,上傳CMS(上傳模版包至阿里雲)

·CMS調用MobileServer介面,存入系統

·等待APP端同步到本地

模版載入時序圖:

2. 模版分類及識別

模版分類通過業務場景設定,並且可以通過wap url的特定字元串設別,例如:http://host/yougouPages/Cart?xxx=111

其中yougouPages/Cart即模版識別串(detectKey),容器載入到該url後,通過detectKey確定是否載入已經存在的對應的模版。

3. 配置信息管理

所有模版在MobileServer上維護一份信息(templateInfo)

包括全量包和增量包下載地址,模版包的版本,識別字元串,模版id,模版更新時間戳,模版有效截止時間戳,模版狀態(用於下線模版識別,解決突發問題)

4. APP端H5容器對離線資源的重定位

模版資源打包時,需要形成一份url->localPath的映射表:

後續考慮對資源映射進行加密處理,防止被篡改。

5. H5與APP交互

考慮到H5對APP端的硬體信息、鑒權信息,請求信息等的依賴,H5Container需要為H5提供介面,提供對應的信息。所有通過模版載入的url,帶上額外參數http://host/subpath?&ish5container=1,H5頁面可根據該參數確定相應的初始化工作。

時序圖:

6. JsBridge介面描述

JsBridge作為native與js的信息交互的通道。提供最基本的方法調用的介面。APP需要進行業務維度的封裝,暴露出介面。

7. 模版使用策略

8. 容器性能指標

9. 容器增量包方案

10. 框架結構

11.H5容器構成

以上由網易企業信息化服務提供商,湖南領先網路科技整理髮布。

網易企業服務(qiye163.co)是網易憑藉其20年品牌優勢與經驗在企業郵箱的基礎上,為進一步布局企業市場而打造的企業級產品矩陣,致力於提供一站式企業信息化解決方案。湖南領先網路科技是網易企業產品授權經銷商,專業為企業提供網易企業郵箱、網易辦公套件等一站式企業信息化專業解決方案。辦理網易企業郵箱及旗下企業產品相關業務,就找湖南領先網路科技。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 網易企服 的精彩文章:

網易企業郵箱聯合微軟推出「易企辦」,有效驅動企業雲端辦公轉型
網易MC:Android端的短視頻開發技術
網易雲蔣文康:我對雲環境下訪問控制系統的思考
榮耀9發布會推遲1個月為保量 胡歌成榮耀代言人
OPPO稱超過1億人使用自家手機 提前透露R11參數

TAG:網易企服 |

您可能感興趣

AWS CTO:重新審視雲環境中的容器
5月原廠新品推薦:FPGA、MOSFET、感測器、電容器
網易雲基於 K8S 的容器服務實現
容器服務TKE
歐盟資助項目NOFLAME—研發出防火納米容器
CUSCO BLUE POWER汽車啟動電容器授權儀式
容器、服務網格和 API 網關:從邊緣開始
HPE為其OneSphere混合雲管理器添加容器服務
AT&T和Google:容器的興起
華為雲全球首推K8S無伺服器容器
Spring與SpringMVC的容器關係分析
用 ConfigMap 管理配置-每天5分鐘玩轉 Docker 容器技術
Nvidia雲服務新增9個AI超算容器
Nginx 容器教程
在Linux下使用Docker容器化技術搭建Web伺服器運行環境
專訪BoCloud博雲CEO花磊:容器雲平台和雲管理平台是剛需,定位PaaS場景而非容器標籤
ofo 基於 K8S 容器雲平台的實踐
AWS託管服務將向物聯網和容器遷移
谷歌新作gVisor:VM容器融合技術已經到來
《X4:基石》電容器獲得方法分享