EMP v5.3 技術白皮書

概述

EMP旨在幫助企業將其業務拓展到移動渠道。爲此,我們提供了一個開放、易用、綜合的企業移動應用平臺,來幫助企業對其移動應用進行開發、實施、管理和維護。EMP平臺包含了一套跨移動終端的應用開發環境,一個支持集羣部署的移動應用接入網關,一個企業私有應用商店,和集成了應用管理和數據分析的管理後臺。基於EMP,企業可以做到:

  • 快速的移動應用開發,支持主流終端,良好的用戶體驗
  • 快速接入已有的企業服務,整合已有的業務功能
  • 靈活的部署和擴展,動態的企業應用、服務和業務管理
  • 統一的推送管理、用戶行爲數據分析和管理

1 開發

EMP涵蓋了對iOS、Android、Windows Phone、PC(基於QT技術)平臺的支持,EMP的客戶端SDK和界面規範可以有效的促進代碼在各平臺以及企業應用之間的複用,從而降低企業的開發成本。基於EMP提供的開發環境(IDE)和工具集(SDK),企業可以有效的減少跨移動平臺應用開發的工作量,縮短應用交付和上線的週期,並簡化管理和維護工作。

2 接入

EMP Server(網關)作爲企業移動應用的統一入口,幫助企業快速的集成和發佈其後臺服務。EMP提供了對於多種接口協議和數據格式的支持,通過在EMP Server上定義企業自有服務接口的適配方式,企業能夠迅速的將已有的資源和服務呈現到其移動應用中。

3 運行

在完成應用開發和測試之後,通過EMP提供的工具集可以將應用打包發佈到公共的應用商店(如AppStore和Google Play),或者企業的私有商店。這些應用在運行時通過EMP Server獲取企業提供的不同形式的服務。EMP Server作爲一個穩定的內容網關,支持高併發的用戶訪問和大量異構數據的解析和轉換。除此之外,EMP 爲Client和Server之間提供了不同種類的安全策略,包括基於TLS修改的自定義安全信道實現。

4 管理

當應用發佈之後,企業可以通過EMP Console(管理後臺)實時監控移動應用的接入情況,管理不同的移動應用可以獲取到的後臺服務,並通過管理後臺的不同功能模塊,實現1)對移動應用的更新;2)對後臺服務的實時接入;3)對推送服務的使用;4)對移動應用使用和業務訪問的統計數據獲取和呈現;5)對企業私有商店中應用和用戶的管理。

組件介紹

EMP平臺包含:

  • EMP Device Runtime Components(跨平臺客戶端組件)
  • EMP Server(移動應用接入網關EWP)
  • EMP Application Center(企業私有應用商店)
  • EMP Console(管理後臺)
  • EMP Studio(IDE及開發調試工具) 

1 EMP Device Runtime Components

1.1 Native & Web

當智能終端用戶成爲企業的必爭之地,移動渠道的建設對於企業來說日益重要,Native VS Web也隨之成爲移動應用開發技術選型的熱門話題,兩者在App體驗和開發成本上的取捨對於企業來說,就像是魚和熊掌,難以兼得。HTML5的出現給出了未來的方向,但HTML5自身的完善需要一個過程,不同瀏覽器和設備廠商對它的支持過程則更加漫長。

因此,EMP客戶端組件從平臺伊始就致力於Native和Web的結合,通過將一部分HTML和CSS子集映射到Native UI的實現,EMP客戶端組件實現了一個跨平臺的Web規範解析和渲染框架。在此基礎上,我們引入了Lua作爲腳本引擎來實現Lua API和設備本地語言API的綁定,並定義了Web規範以及Lua API的擴展的方式,使得設備本地的擴展最終能以Web規範的形式體現。從而讓基於EMP的移動應用開發人員,可以最大程度的利用Native和Web所帶來的好處。

我們在下面的章節介紹通過EMP的客戶端組件可以實現的特性。

1.2 HTML & Native UI

EMP客戶端組件從標準HTML標籤集合中選取了一部分適合在移動終端使用的HTML標籤作爲EMP的HTML標籤子集,並使用不同平臺上的Native UI控件來實現這個子集。通過EMP HTML引擎實現從HTML標籤轉換爲Native UI控件:

 與此同時,EMP客戶端組件針對每一個HTML標籤,從標準CSS規範中選取了針對該標籤適合在移動終端使用的CSS樣式子集。通過EMP CSS引擎讓這些CSS樣式可以應用到其所支持的HTML標籤上。 

從而,EMP形成了自有的HTML和CSS規範,它們符合標準的HTML和CSS規範,在各終端平臺上擁有EMP爲其定義的本地實現和展現。

通過上述的實現,我們可以獲取到:

  • Native UI的運行速度和展現效果
  • 基於HTML和CSS語言的界面開發
  • 基於EMP的定製擴展

1.3 Lua AS Script

1.3.1 Why Lua

Lua是一個小巧的腳本語言, 其設計目的是爲了嵌入應用程序中,從而爲應用程序提供靈活的擴展和定製功能。

  • 可擴展性

Lua使用ANSI C編寫而成,幾乎在所有操作系統和平臺上都可以編譯、運行。Lua腳本可以很容易的被C/C++代碼調用,也可以反過來調用C/C++的函數,這使得Lua在嵌入和擴展應用程序的場景中得以被廣泛應用。不僅僅作爲擴展腳本,也可以作爲普通的配置文件,代替XML等文件格式,使得程序更容易理解和維護。

  • 輕量級

輕量級Lua語言的官方版本只包括一個精簡的核心和最基本的庫,一個完整的Lua解釋器不過200K。在目前所有腳本語言中,Lua無疑是將小巧和快速結合的最完美的一個。

  • 其他特性

同時支持面向過程編程和函數式編程(functional programming);自動內存管理;只提供了一種通用類型的表(table),用它可以實現數組,哈希表,集合,對象;語言內置模式匹配;閉包(closure);函數也可以看做一個值;提供多線程支持;通過閉包和table可以很方便地支持面向對象編程所需要的一些關鍵機制,比如數據抽象,虛函數,繼承和重載等。

上述特點表明,在跨平臺的移動終端上,Lua是作爲嵌入式腳本的最佳選擇。基於這些考慮,我們選擇Lua作爲我們默認的腳本引擎,嵌入到頁面中的Lua腳本會被EMP客戶端組件解析並執行,通過將Lua API和設備API以及EMP Native Lib API的綁定,開發人員可以通過編寫Lua腳本實現本地邏輯,讓應用使用者獲得Native App的運行速度和體驗。

1.3.2 Cross Platform Lua API 

EMP通過Lua提供統一的跨平臺API,同時支持iOS、 Android、 Windows Phone、QT平臺。通過這些Lua API的定義和實現,開發人員可以通過編寫腳本邏輯操作頁面元素中的HTML和CSS元素;也可以通過API調用訪問設備的本地功能,例如重力感應、攝像頭、通信錄、音頻/視頻播放等等。

1.4 可擴展性

EMP客戶端框架預留了UI控件和Lua API的擴展接口。通過這些接口,可方便擴展APP程序。在業務設計時,若基本控件無法滿足業務展示的需要時,可以通過擴展接口來增加擴展控件或Lua API以滿足業務需求,提供更爲靈活的用戶交互。

EMP客戶端框架使用配置文件的方式擴展UI控件,擴展靈活、方便;在要擴展控件時,開發人員僅僅需要按照指定格式配置class.xml文件同時讓擴展控件繼承EMP提供的基控件(或者任一基礎控件和擴展控件)即可,EMP解析引擎會按照配置文件中的映射關係進行解析和展示。擴展控件編寫人員僅僅需要關心自定義控件的實現,而不必關心EMP的核心引擎。擴展示意圖見:  EMP客戶端框架同樣預留了Lua的擴展接口,開發人員需要使用EMP所提供的註冊接口先註冊自己的Lua方法,然後再使用本地代碼實現所註冊Lua方法的功能。擴展示意圖見:

1.5 數據和服務獲取

1.5.1 通訊&安全

EMP客戶端和服務端之間支持HTTP、HTTPS和基於HTTP擴展的TLS 協議。 

EMP擴展的TLS協議是基於TLS v1.1修訂,在HTTP報文的交互中建立安全通道,信道包含了身份認證、標識、抗抵賴、自主訪問控制、強制訪問控制、用戶數據完整性保護、用戶數據保密性保護、數據流控制、可信路徑、密碼支持、防重放、客戶端篡改驗證等安全功能。

通過自建立的信道,客戶端和服務器之間的通訊可以避免:

  • 因設備本地TLS實現規範不統一而導致的加密強度降低;
  • 因標準TLS的開放性和開源實現導致的信道安全性降低;
  • 因移動運營商WAP網關適配問題到導致的HTTPS信道不穩定。

與此同時,基於自定義的信道,可以做到因企業的需求而靈活擴展。

1.5.2 EMP服務獲取和資源同步

EMP客戶端爲與EMP Server之間的通訊封裝了一些列的Lua接口,使得界面開發人員無需關心底層的通訊實現,更無需關心企業後臺的系統組成和業務邏輯,在移動應用的開發中根據業務需要選擇調用本地Lua API即可獲取到業務所需的數據和服務。

除此之外,EMP在客戶端和服務端之間定義了資源同步的協議。根據該協議,服務端可以維護不同客戶端平臺和分辨率下最新的客戶端資源,客戶端在聯網時可以將這些資源同步到本地,在後續的流程中使用。通過對該協議的實現,客戶端可以實現離線業務並及時更新,而移動應用中的大量界面元素(如HTML、CSS和Lua)也可以通過該協議同步到客戶端本地,從而有效的減少聯網的次數和傳輸流量。

1.6 本地安全存儲

EMP客戶端提供了設備本地安全存儲的實現,對於本地存儲的數據可根據需要進行加密存儲,從而達到保護用戶數據和隱私的目的。本地數據密鑰由設備特徵碼(比如IMEI號、生產廠商代碼等)、平臺名稱、預置密鑰等經過自定義的算法生成。通過在不同設備使用不同的密鑰生成的算法和因子,進一步的降低了用戶數據破解和泄露的風險。

EMP客戶端同樣爲開發人員提供了統一的Lua API來獲取本地數據安全存儲的功能,使得開發人員無需關心各平臺上的不同存儲實現。

1.7 對HTML5的支持

EMP客戶端擴展了系統的WebView組件和一部分JavaScript方法,可以很好的支持HTML5技術並可以使用設備特性。同時,EMP還提供了一部分JavaScript擴展庫和標準的擴展方式,以便於擴展WebView組件中JavaScript的功能。

使用EMP客戶端擴展的WebView和JS,我們可以做到:

  • 快速接入和呈現基於HTML5開發的頁面
  • 允許在HTML頁面中通過調用EMP JS API使用設備本地功能
  • 擴展EMP JS API,使WebView組件可以獲取更多設備能力

2 EMP Server

2.1 數據和服務聚合

對於企業來說,開發出擁有良好用戶體驗的移動應用,不僅僅需要優秀的前端展現和交互設計,同樣也需要不斷豐富的後臺服務作爲支撐。而如何將企業散落在不同系統中的後臺服務和數據整合起來,爲移動終端用戶提供優質的服務流程和體驗,是企業在開發移動應用時需要面對的挑戰。

 EMP Server正是爲了應對這樣的挑戰而生。爲幫助企業實現服務和數據的聚合,EMP Server支持多種通訊協議,可以同時維持到多個企業後臺服務的連接。通過合理的業務規則配置和開發,EMP Server將來自終端用戶的請求轉發到業務流程所需的企業後臺服務接口,通過對多種類型數據格式的支持,EMP Server可以將不同服務後臺的接口返回數據解析並作爲業務流程中的動態數據嵌入到符合EMP界面規範的模板中形成報文,最終返回給移動設備前端去渲染並呈現。

通過EMP Server,企業可以根據業務需求將不同後臺系統中服務和數據整合,形成符合移動渠道使用特點的業務流程,給運行在不同平臺上的移動終端設備提供統一的服務獲取接口和UI展現。

2.2 Web Service Framework

EMP Server除了提供基本的企業後臺接入和業務規則配置之外,還提供了Web Service開發的框架。

通常,我們把一個移動應用(Client App)所需的所有後臺服務(Web Service)封裝爲EMP的一個後臺應用(Server App)。通過對業務規則的配置,我們將移動應用上一個獨立的業務功能封裝爲一個Channel,它通常包含了一個EMP Server上的Web Service接口,對企業後臺接口的訪問規則,對返回數據的解析規則,和一組符合EMP界面規範的模板文件。而一個完整的移動應用最終會被分解爲一個個獨立的Channel配置和模板文件開發。

除此之外,EMP Server還爲後臺App提供了更加自由的擴展方式,使其可以定義標準EMP Server接口之外任意形式的Web Service接口。

2.3 系統擴展性

對於移動互聯網用戶,後臺服務的高可用性是影響其使用體驗的關鍵因素之一。爲能夠同時處理來自成千上萬的移動終端設備的併發訪問,EMP Server選擇基於面向併發的語言Erlang開發。

Erlang語言利用語言級別的微進程(Process)機制使得每個終端設備的請求都可以獨立的被單個的Erlang Process處理而互不影響,這些Process的運行可以充分的利用到單臺Server乃至集羣中每個Server上的每一個CPU內核。Erlang語言內建的Process和分佈式通訊機制使得基於PC Server集羣構建一個高可用性、高擴展性、高吞吐量的服務聚合網關變得容易。

EMP Server正是充分的利用了Erlang語言的這些特點,在衆多的移動設備和企業後臺服務之間構建了一個能夠適應不同級別企業需求的數據和服務的聚合網關。

2.4 消息推送

除了讓用戶主動的使用企業移動應用,企業可以通過EMP提供的統一推送接口給不同類型的設備推送消息,包括iOS、Android、Windows Phone平臺上的設備。通過調用統一的消息推送接口,開發者無需關心設備的種類和推送的實現方式,就可以實現到目標設備的消息發送。

3 EMP Application Center

EMP提供了企業私有商店組件,功能類似於App Store、Google Play等公共應用商店,但它主要面向企業內部員工,幫助企業建立私有的移動App分發平臺。 

如上圖所示,企業私有商店由三部分組成:管理控制檯、服務端和移動客戶端應用(App Store應用程序)。管理員通過管理控制檯可以進行

  • App的管理,包括App創建、屬性編輯、評價管理、權限管理
  • 設備管理,包括移動設備查看和標識
  • 用戶/組的管理,包括創建、刪除、編輯用戶/組。

企業內部員工可以通過下載企業私有商店客戶端應用(App Store)並通過身份認證後下載其權限範圍內的App,可以通過App Store中的反饋機制對相應的App進行評分和評論。

3.1 分佈式開發和測試

通過企業私有商店,可以很容易實現企業應用的開發團隊、QA團隊和測試團隊的異地配合,加快應用的開發、測試和試運行週期,有效提升應用測試設備和測試場景的覆蓋率,以最終提升應用正式發佈時的質量和體驗。

3.2 企業私有應用分發

對於B2E場景中的移動應用,企業可以藉助企業私有商店加快應用分發到員工設備上的速度,通過持續優化和版本迭代提升基於移動應用辦公的效率。通過設備管理和權限管理,可以獲取移動應用使用情況的概覽,根據需要進行企業員工的權限控制。

4 EMP Console

EMP 管理後臺是一個基於Web UI界面提供的對EMP Server進行管理和控制的工具。通過EMP管理後臺可以實現:

4.1 移動應用服務管理

EMP Console可以控制集羣中任意EMP Server上APP(Web Service應用)的加載和停止,可以動態控制APP中Channel(移動應用中的業務功能)的加載和刪除,可以動態控制在用戶設備上某一菜單下的Channel集合。

並且,已發佈的APP可以通過EMP Console在線升級,而不影響其他APP服務的使用。

4.2 服務狀態監控

通過EMP Console,可以實時監控EMP Server的運行狀態,包括:session數量、用戶連接數量、服務器CPU和內存使用情況、OS進程狀態等。

4.3 消息推送管理

EMP Console中包含對設備推送的管理界面,可以實時的觸發對單一設備或者設備羣的消息推送;也可以定義消息羣發的任務,進行延時和定時的消息廣播。

4.4 數據統計和可視化報表

EMP Console中包含了基於EMP Server獲取到的用戶訪問數據的報表呈現。通過對EMP Server的配置,可以定義EMP Server的業務流程中需要統計的數據類型和統計方式,通過對這些數據的採集和彙總,形成可視化的結果報表。

在智能設備終端上,基於EMP Server的數據統計可以被EMP Statistic產品所替代。

EMP的數據統計按照數據來源可以分爲基於EMP Server和基於EMP Client端,基於Server端的統計主要針對功能和網絡受限的Feature Phone,這些設備已逐漸退出歷史舞臺。基於EMP Client端的數據採集和分析請參考EMP Statistic產品說明

5 EMP IDE

5.1 應用開發和調試環境

EMP IDE作爲開發EMP應用的集成開發環境,提供了一個基於Eclipse的插件,該插件提供了

  • Erlang語言、EMP界面語言(包括HTML、CSS、Lua)和模板語言Clearsilver的開發環境
  • 後臺APP的工程嚮導,菜單和Channel的配置和可視化編輯,開發過程中的後臺服務管理(代碼編譯和加載)。

5.2 代碼模板

開發者可以通過工程創建嚮導按需生成APP應用的代碼框架,可以爲單個的Channel初始化其開發模板。此外,開發者還可以定製嚮導生成的應用模板結構和內容。

系統要求

1 生產環境

EMP生產環境主要指EMP server的環境,它可以運行在如下操作系統:

  • AIX
  • Red Hat Enterprise Linux(RHEL)
  • SUSE Linux(SLES)
  • Red Flag Linux

EMP server可使用如下數據庫進行持久化存儲:

  • Mysql
  • Oracle
  • Sybase
  • DB2
  • Informix

EMP server運行時環境:

EMP server需要的Web Server:

2 開發環境

EMP開發環境主要包括了EMP Server、數據庫和基於eclipse的EMP Studio(IDE及開發調試工具)。EMP Studio可安裝在Windows操作系統上;EMP Server運行在Linux虛擬機中;如果需要數據持久化存儲,那麼需要安裝如下任意數據庫:

  • Mysql
  • Oracle
  • Sybase
  • DB2
  • Informix

EMP server運行時環境:

EMP server需要的Web Server:

EMP server需要的C/C++編譯器:

  • gcc(GNU project C and C++ compiler)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章