公司現有專案是c/s結構,客戶端採用qt進行的開發,已經開發維護近10年,結構穩定成熟。現開發乙個新的專案,主要的功能需求一致,只是展示方式需要重新設計實現。公司傾向於向b/s方向轉變,新專案直接採用b/s開發,所有功能模組都需要重新設計實現,週期比較長,成本比較大。在之前的專案中有過在qt中嵌入html介面的經驗,所以想採用bc/s的模式進行開發是否可行,原本的server端保持不動,client端主體邏輯不動,只採用html展現ui介面。形成由html+c++結合實現client,即bc/s架構。
我們的客戶端專案採用qt實現,採用qt中webkit模組作為處理引擎,載入、解析、顯示前端頁面。qt與前端的js進行互動,前端頁面只實現ui的展示、人機互動功能,業務邏輯處理交由c++進行處理。在整個處理過程中qt與前端頁面互動是整個架構實現的關鍵,因為整個專案有近20個介面,共計有40餘個互動介面。所以針對qt與前端通訊互動進行了封裝,形成了乙個通訊庫(qtweb)(後來發現這是乙個很明智的選擇,後面專案的開發和持續迭代過程中互動能力上都沒有出現瓶頸)。
優點:1、開發速度快:在原有的系統基礎之上只進行了ui部分的調整,html開發ui介面速度比較快,後續介面調整的成本也相對低
2、ui設計更加美觀、多樣化:原本使用qt開發介面,介面比較固定,實現一些特效比較麻煩。html對於ui設計更加多樣化,網上的例項也比較多
3、逐步向b/s過渡:可以在不影響專案進度的情況下,逐步向b/s架構過渡,減小轉變的陣痛
缺點:1、執行效率相對低:採用qt的webkit引擎展示html時執行效率要比採用瀏覽器低,qt5中採用了chromium瀏覽器引擎,執行效率有所提高,但是對比chromium瀏覽器還是存在差距。介面比較複雜或者資料量比較大時會出現卡頓情況。後續不斷的優化相信會解決掉
2、對前端設計有所要求:前端html中可以與qt通訊是因為html中有乙個qt物件,通過此物件進行互動。但是前端使用框架之後,可能造成訪問不到這個物件導致無法通訊。只能在qt載入的html中進行互動,所以前端需要做協議的中轉,都通過特定的頁面或js與qt進行通訊
bc/s架構是乙個過渡的過程,還存在著一些不足,它應該算是對client設計的乙個補充。在使用中根據實際的需求可以選擇全部採用html設計介面,也可以採用qt/mfc和html混合使用。
軟體開發中的詳細設計
傳統軟體開發中的詳細設計 現在公司都使用敏捷開發,認識敏捷開發 敏捷開發中詳細設計的目標 詳細設計對技術團隊的好處 詳細設計對開發者個人的好處 優秀的詳細設計,需要具備一下能力 詳細設計初學者的學習思路 詳細設計有 章法 但沒有 公式 章法 規範,比如命名 注釋等。這些不是 公式 設計模式 相同業務...
軟體開發之概要設計之軟體架構問題
概要設計之軟體架構問題 百科的定義 軟體架構是乙個系統的草圖。軟體架構描述的物件是直接構成系統的抽象元件。各個元件之間的連線則明確和相對細緻地描述元件之間的通訊。在實現階段,這些抽象元件被細化為實際的元件,比如具體某個類或者物件。在物件導向領域中,元件之間的連線通常用介面來實現。軟體體系結構是構建計...
網路程式設計 軟體開發架構
一 楔子 現在我們已經學會了寫python 假如你寫了兩個python檔案a.py和b.py,分別去執行,你就會發現,這兩個python的檔案分別執行的很好,但是如果這兩個程式之間想要傳遞乙個資料,應該怎麼做呢?二 軟體開發架構 1 客戶端服務端概念 2 c s架構 c s即 client與serv...