最近被問到一個問題,"用mvc談談微信的架構設計",下面是個人總結java
一、對MVC的理解android
mvc指的是模型(M—Module),視圖(View),控制器(Control)。通常狀況下,M指一個項目的存儲結構,存儲數據模型以及業務業務數據模型,V指的是用戶與系統的交互接口,也叫作表現層,這裏對用戶體驗考慮較多,C表明用戶從視圖接口接入的真正功能,掌管業務功能的變現,也叫邏輯層,三個層次間用接口定義交互邊界,用工廠產生具體的實現,能夠有效地減小耦合,提升迭代效率和開發效率等。ios
二、從MVC視角看微信web
用mvc的視角看待微信這個項目,能夠用mvc對微信作一個大概的分級,其中能夠將微信客戶端整個當作一個v層,微信服務器由M,C結合。編程
三、從MVC視角淺談微信服務器
考慮到微信客戶端變動成本太高的問題,將邏輯重心放到服務器,即服務器處理數據的流入流出和對客戶端提供接口,客戶端主要負責展現效果。服務器在不能有效優化的階段前提下,能夠將不是服務器必要的具體實現邏輯交由客戶端實現,避免服務器增長重複判斷(例如:服務器對android、ios、wp客戶端的各類消息統一協議,具體消息的處理交由客戶端識別處理)。客戶端可使用混合編程,即一部分使用java原生代碼,一部分經過webview的衍生使用網頁展示,能夠減小客戶端的開發實現和更新成本,忽略必要的質量監控邏輯和容災邏輯以及必要的版本區分邏輯,這一部分表明整個項目的V層。微信
四、MVC是什麼架構
真正開發一個微信所要控制的邊界會更加嚴格,對客戶端、服務器也會根據具體的業務要求進行進一步的劃分和拓展,如客戶端能夠劃分爲mvp模式,對每個功能界面提供一個更具體的服務,服務器也能夠對具體功能劃分更多的層次,對具體的由網頁實現的業務劃分紅mvvm模式等,微信的版本更迭速度是很快的,那麼微信必有極快的業務迭代實現能力,其每個層次,每個功能必然是有較高的拓展能力和較強的邊界規範,對每一個功能進行分而治之的思想,這也是MVC模式的思想所在。因此,從微信看來,MVC就是一種約束、拓展、分而治之的思想,MVC不適用全部的項目開發,但其思想是對全部項目有益的。我以爲這就是MVC在當今業界所存在的意義,微信不會使用固定的幾種開發模式,其項目結構的成立和演變,必然是從其產品的重心以及相關業務產生的,但無論是什麼樣的項目,什麼樣的模式,MVC的思想—約束、拓展、分而治之必定是應用其中的。mvc