服務端兼容多個不同APP版本


1、實現目標

  發布第N版APP,不影響N版本之前APP的正常使用,不強制用戶升級APP版本,兼容多個版本的APP的正常使用。

2、解決思路

  服務端維護不同版本APP的api(例如版本參數 v1、v2、v3…),根據手機端傳遞的URL及版本信息,動態調用對應的api。

3、常見的方案

  3.1 常見的URL請求傳遞版本信息的4中方式

               url+版本參數: www.xxx.com/api.xxx?version=v1

        www.xxx.com/sys/user/getUserByName?version=v1.0

        www.xxx.com/sys/user/getUserByName?version=v2.0

               url post: header中添加版本參數(類似token使用)

      url路徑: www.xxx.com/v1.api.xxx。

        www.xxx.com/v1.0/sys/user/getUserByName

        www.xxx.com/v2.0/sys/user/getUserByName

               二級域名: www.v1.xxx.com/api.xxx

        www.v1.0.xxx.com/sys/user/getUserByName

        www.v2.0xxx.com/sys/user/getUserByName

  3.2 服務器APP代碼版本管理

      每個APP版本對應一個project,發布時獨立部署不同版本的app。可以使用SVN分支功能管理不同版本的project。

      降低耦合性,杜絕版本之間的依賴,易於維護。版本獨立部署,減少單個節點的負載壓力。但是會出現大量重復代碼。

    同一個project兼容不同APP版本的api。根據請求的版本信息的調用不同的api(常見的路由、請求轉發方式)。

      減少重復代碼的重復,但是不恰當的維護,容易造成代碼的臃腫,增加版本之間依賴、bug,降低代碼的可維護性,不支持每個版本獨立部署。

4 個人推薦

  二級域名 + 每個APP版本對應一個project。需求在變化,同時APP版本也在變化,同一個API會經過多人修改,原先精簡的API隨着時間的流逝變得臃腫,API之間過度依賴,修改某處代碼,導致其它未知的錯誤,代碼變得難以維護。因此隔離各個版本的APP代碼是非常有用的。

  

 

  4.1APP端如何動態調用服務器的API

    每次APP啟動時調用服務器版本api,獲取url及版本信息。客戶端根據系統默認的版本號version獲取對應的URL。例如傳遞version為v2.0,則返回www.v2.0.xxx.com

[
    {
        "name": "APP V1.0版本", 
        "version": "v1.0", 
        "url": "www.v1.0.xxx.com"
    }, 
    {
        "name": "APP V1.0版本", 
        "version": "v2.0", 
        "url": "www.v2.0.xxx.com"
    }
]

5、app版本的數量

  維護的app版本過多,增加維護成本。對於一些過時的app版本、使用量較少的老版本、數據庫不兼容、重大功能升級等建議強制用戶升級。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM