|
可伸縮性是一種對軟件系統處理能力的設計指標,高可伸縮性代表一種彈性,在系統擴展過程中,能夠保證旺盛的生命力,通過很少的改動,就能實現整個系統處理能力的增長。
在系統設計的時候,充分地考慮系統的可伸縮性,一方面能夠極大地減少日后的維護開銷,并幫助決策者對于投資所能獲得的回報進行更加精準的估計;另一方面,高可伸縮性的系統往往會具有更好的容災能力,從而提供更好的用戶體驗。
WEB交互式系統的可伸縮性主要體現在兩個方面:
- 平臺的可伸縮性:隨著WEB技術的發展,越來越多的平臺開始使用WEB技術來構建系統,一方面不同的平臺提供的環境支持存在著各種差異;另一方面隨著平臺的發展,不斷的會有一些舊平臺退出歷史舞臺,新平臺轉而成為主流平臺;因此構建的WEB系統需要能夠快速的響應此類變化就需要其具備良好的平臺伸縮性
- 模塊的可伸縮性:隨著系統功能不斷增刪更新需求的變化,系統可能會變得越來越復雜,冗余信息也可能會越來越多,改動所帶來的影響范圍也可能會越來越大,因此良好的模塊伸縮性可保證系統具有良好的可維護性,讓系統始終處于最佳狀態
WEB交互式系統的主要應用包括:
本系列文章主要分為兩個主要部分對可伸縮性進行闡述,分別是平臺的可伸縮性和模塊的可伸縮性。本文是系列文章的第一篇,討論平臺的可伸縮性。
平臺的可伸縮性
WEB交互式系統對平臺的可伸縮性主要表現為:
- 可擴展性:對于新興平臺能夠快速進行支持
- 可縮減性:對于過時的平臺冗余信息能夠以最小的修改方式剔除
我們先介紹一下WEB交互式系統的目標平臺的情況。
平臺分類
根據系統所在容器的差異,我們將平臺分為瀏覽器平臺和混合應用平臺兩大類。各分類的詳細說明見下文所述。
瀏覽器平臺
按引擎劃分
瀏覽器平臺,按照主流引擎可以劃分為以下幾類:
混合應用平臺
根據混合應用的宿主平臺的差異,我們將混合應用的目標平臺分為以下幾類:
宿主 | 說明 |
Android | Android系統的混合應用,瀏覽器引擎會自動適配至Webkit |
ios | ios系統的混合應用,瀏覽器引擎會自動適配至Webkit |
WinPhone | Windows Phone系統的混合應用,瀏覽器引擎會自動適配至Trident |
PC | 桌面應用,采用CEF做為容器,瀏覽器引擎會自動適配至Webkit |
平臺適配
AOP(ASPect-Oriented Programming):面向切面的編程范式,其核心思想是將橫切關注點從主關注點中分離出來,因此特定領域的問題代碼可以從標準業務邏輯中分離出來,從而使得主業務邏輯和領域性業務邏輯之間不會存在任何耦合性。
這里我們可以借鑒AOP思想來實現平臺的適配策略,結合不同的平臺實現邏輯,我們可以認為對于使用規范、標準來實現業務邏輯的部分為我們的主關注點,而不同平臺可以做為若干的切面關注點進行封裝,各平臺只需關注自己平臺下對標準的修正邏輯即可,因此可以通過增加、刪除平臺修正的切面邏輯來實現對不同平臺的適配。
實現時我們首先提取標準業務邏輯,然后各平臺根據實際情況實現對業務邏輯的修正:
- 標準業務邏輯:主關注點,這里主要是使用根據W3C、ES標準來實現的業務邏輯
- 前置平臺修正邏輯:領域特定關注點,主要是根據平臺特性對標準在該平臺下的修正,修正邏輯會先于標準邏輯執行
- 后置平臺修正邏輯:同前置平臺修正邏輯,也是領域特定關注點,修正邏輯會在標準邏輯執行后再執行
根據此思路我們對比以下兩段代碼:
代碼一:目前常用的平臺適配方式
function doSomething(){ if(isTrident){ // TODO trident implement }else if(isWebkit){ // TODO webkit implement }else if(isGecko){ // TODO gecko implement }else if(isPresto){ // TODO presto implement }else{ // TODO w3c implement }}// 上層應用使用doSomething(1,2,3);
it知識庫:構建高可伸縮性的WEB交互式系統(上),轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。