企業(yè)成長是一個過程,摸索中前進(jìn),開天辟地做自己第一個項目系統(tǒng)時,需要大量的人才,實現(xiàn)項目的網(wǎng)絡(luò)代碼,界面代碼,數(shù)據(jù)緩存代碼,邏輯代碼,存儲代碼。產(chǎn)品經(jīng)過研發(fā),測試,運營,穩(wěn)定,再多做幾個項目,代碼經(jīng)過線上復(fù)雜環(huán)境的考驗與蹂躪,逐漸成熟。
一個成熟的企業(yè),企業(yè)都會有自己成熟的(與業(yè)務(wù)無關(guān)的)基礎(chǔ)庫模塊:
1、網(wǎng)絡(luò)基礎(chǔ)庫。
2、存儲基礎(chǔ)庫。
3、UI 渲染基礎(chǔ)庫。
4、企業(yè)內(nèi)部常用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)庫。
企業(yè)發(fā)展了,客戶也多了,產(chǎn)品項目也多了,業(yè)務(wù)需求也多了。公司招的人也多了,但是你會發(fā)現(xiàn),之前開天辟地的,很多高級研發(fā)元老變得“無事可做”了。他們負(fù)責(zé)難度最大的非業(yè)務(wù)模塊已經(jīng)穩(wěn)定了。他們要不轉(zhuǎn)型帶團隊,要不轉(zhuǎn)型做業(yè)務(wù)邏輯。團隊領(lǐng)導(dǎo)人數(shù)有限,業(yè)務(wù)邏輯是繁瑣的客戶需求,難度不大,卻耗費大量時間和精力,往往技術(shù)水平需要不高,普通員工熟悉了系統(tǒng)架構(gòu)后,只需要在原來穩(wěn)定的架構(gòu)上作業(yè)。為了趕進(jìn)度,經(jīng)常沒天沒夜地加班加點地干。—— 所以,很多時候,離開是他們是最好的選擇。對于企業(yè),能用中低級員工解決業(yè)務(wù)的問題,也可以有效控制成本。
這時候,問題來了。企業(yè)要保證產(chǎn)品的穩(wěn)定,員工的流動不能影響產(chǎn)品正常運轉(zhuǎn)。所以我們在設(shè)計系統(tǒng)架構(gòu)的時候,要減少模塊間的耦合,能夠讓員工更好地分工,一方面,員工在做自己熟悉的模塊能更有效地產(chǎn)出。其次也在他離開的時候,本模塊的團隊對接即可,不影響其它模塊的功能。所以下面討論下產(chǎn)品的架構(gòu)。
客戶端架構(gòu)分層:
1、UI 層:負(fù)責(zé)直接面向用戶的界面渲染,觸發(fā)用戶行為的操作事件。
2、網(wǎng)絡(luò)層:負(fù)責(zé)復(fù)雜的網(wǎng)絡(luò)IO,異步方式進(jìn)行數(shù)據(jù)發(fā)送和接收,異常時能返回相關(guān)錯誤。
3、本地存儲層:負(fù)責(zé)存儲用戶或者系統(tǒng)的屬性型數(shù)據(jù),日志型數(shù)據(jù),文件數(shù)據(jù)。
4、數(shù)據(jù)緩存層:系統(tǒng)數(shù)據(jù)中心,緩存在內(nèi)存,存儲屬性型數(shù)據(jù),日志型數(shù)據(jù),或者動態(tài)改變的邏輯型數(shù)據(jù)。
5、協(xié)議層:網(wǎng)絡(luò)層收到數(shù)據(jù)包,然后解包,封裝給邏輯調(diào)用的接口,目的是為了將協(xié)議與邏輯解耦。
6、邏輯層:負(fù)責(zé)實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯。
通常的架構(gòu)有這幾個層。其中前3個:網(wǎng)絡(luò)層,UI層,存儲層都是與業(yè)務(wù)無關(guān)的?,F(xiàn)在技術(shù)日新月異,更換技術(shù)模型也是常有的事。協(xié)議層作為一個過渡,銜接底層和邏輯,讓寫邏輯的人只關(guān)心帶具體參數(shù)接口的傳遞,而不是復(fù)雜的協(xié)議。分層的目的是為了根據(jù)系統(tǒng)功能進(jìn)行分工,各個層之間進(jìn)行解耦,層與層之間通過接口進(jìn)行銜接,只要接口不變,每個層的內(nèi)部變動不會影響其它層的功能。
常用設(shè)計模式:
1、MVC 模式:Moudle,數(shù)據(jù)層,View,UI 層。Contorl 邏輯層,銜接數(shù)據(jù)層和UI層。
2、單鍵模式:一般數(shù)據(jù)中心模塊,做成單鍵實例,對數(shù)據(jù)進(jìn)行集中管理,供各個模塊共享,交互數(shù)據(jù),那么各模塊就不用緩存大量的重復(fù)的數(shù)據(jù)信息,數(shù)據(jù)與邏輯,界面分離。
3、觀察者模式:項目中會有很多事件,模塊只想關(guān)注其中的某幾個事件,那么它先注冊它關(guān)心的事件,當(dāng)事件觸發(fā)時,根據(jù)注冊的事件進(jìn)行通知即可。



更精彩內(nèi)容,請關(guān)注我的博客:https://wenfh2020.com