久久久久国产精品www,综合久久无码,亚洲精品99久久久久中文字幕,无码伊人网Apdm

APP分層架構(gòu)設(shè)計與思考
瀏覽:524 時間:2021-1-17

互聯(lián)網(wǎng)分層架構(gòu)的本質(zhì)是數(shù)據(jù)的移動。

互聯(lián)網(wǎng)分層架構(gòu)演變的核心原則:使上游更高效的數(shù)據(jù)采集和處理(多路復(fù)用),使下游可以屏蔽數(shù)據(jù)采集細節(jié)(封裝)。

無論數(shù)據(jù)如何移動,它最終都會聚合到客戶端。服務(wù)器的分層架構(gòu)設(shè)計已經(jīng)被討論了很多。如何播放客戶端的分層架構(gòu)設(shè)計?是否存在服務(wù)器分層架構(gòu)設(shè)計的地方?讓我們今天簡單地與大家談?wù)劇?

我們先來看一首小詩:

《Android猿》

一次

所有代碼

寫在活動

幾乎

沒有代碼

可以重復(fù)使用

每當(dāng)

請參閱活動

2000行功能

我會

想要離開

以上是團隊中文學(xué)Android程序員的自我報告。表達的核心是:幾乎所有代碼都是在Activity中編寫的(暫不理解Activity,暫時是MVC中的視圖層),沒有封裝和重用。 。

更具體的例子,微信登錄界面,點擊登錄按鈕,你可能想要執(zhí)行這個時間:

驗證用戶名和密碼

拉朋友列表

拉用戶信息

拉朋友信息

拉離線消息

如果你在微信中寫這些“登錄Activity”,你會發(fā)現(xiàn)一些非常嚴重的問題:

登錄到整個邏輯不能重復(fù)使用

登錄過程中的每個子邏輯都無法重用

假設(shè)產(chǎn)品中有一個“重新登錄然后重新登錄”的功能,步驟與登錄相同,您需要在“重新登錄活動”中復(fù)制上述代碼。

還假設(shè)產(chǎn)品中有一個地方需要提取用戶信息“rdquo;并將復(fù)制“獲取用戶信息”中的“登錄活動”代碼。

每個人都知道包裝重復(fù)使用的原則。每個人都理解復(fù)制代碼的缺點。那么為什么你仍然這樣做,讓代碼變得越來越“腐爛”,根據(jù)個人經(jīng)驗,主要有幾個原因:p>

早期的業(yè)務(wù)壓力,APP是幾個學(xué)生,沒有提前計劃

遲到的代碼變得越來越臃腫,不敢動,害怕影響功能,擔(dān)心問題,害怕責(zé)任

在項目中,函數(shù)接口用于編碼和除法。一位同學(xué)也負責(zé)MVC三部分代碼。此外,項目壓力很大。由于它是由一個人編寫的,因此無需對其進行分層。撥打更多電話很麻煩。

在項目中,有一個似乎已經(jīng)完成的需求,代碼看著它,寫在Activity中,糾結(jié)。抽象成功能?你必須改變其他人的代碼,忘記它或復(fù)制它。

無論歷史原因,項目原因,個人原因,每個人都知道分層抽象,代碼重用是正確的,那么有什么計劃能夠抽象這個分層,是否有一個地方可以從后端分層架構(gòu)中學(xué)習(xí)什么?

典型業(yè)務(wù)系統(tǒng)的后端架構(gòu)如下:

Web服務(wù)器層調(diào)用RPC接口,從服務(wù)層獲取數(shù)據(jù),組裝html/json,并完成數(shù)據(jù)表示

Biz-service/data-service提供了一個可重用的上游原子接口來實現(xiàn)業(yè)務(wù)邏輯,該層通過DAO層從db層獲取數(shù)據(jù)。

db層提供數(shù)據(jù)

APP端的分層架構(gòu)不是很相似嗎?或者以登錄服務(wù)為例:

(1)登錄Activity有兩個按鈕,一個確認按鈕,一個取消按鈕,點擊這兩個按鈕只能調(diào)用一個功能:

on_LoginConfirm_Click

on_LoginCancel_Click

這相當(dāng)于表示層。除了交互和表示之外,View層只能調(diào)用這兩個函數(shù)

(2)這兩個函數(shù)的實現(xiàn)由許多可重用的“原子業(yè)務(wù)邏輯”函數(shù)實現(xiàn)

驗證用戶名和密碼:bool verifyPass(name,pass)

拉好友列表:ListgetFriendList(uid)

拉用戶信息:使用rgetUserInfo(uid)

拉朋友信息:ListgetUserInfo(List)

拉離線消息:ListgetOfflineMst(uid)

這相當(dāng)于服務(wù)層,實現(xiàn)業(yè)務(wù)邏輯,提供封裝和重用

(3)“原子業(yè)務(wù)邏輯”在功能執(zhí)行過程中,需要訪問數(shù)據(jù),數(shù)據(jù)采集分為兩類:

同步采集:通過文件,內(nèi)存,本地數(shù)據(jù)庫獲取

異步提取:通常通過回調(diào)從服務(wù)器獲取

這相當(dāng)于數(shù)據(jù)層,屏蔽了上游數(shù)據(jù)采集的復(fù)雜性,使用不同的Proxy實現(xiàn)

在這種結(jié)構(gòu)下:

表示層非常輕,只調(diào)用一個函數(shù)來顯示數(shù)據(jù)

“原子業(yè)務(wù)邏輯”可以重復(fù)使用,不同的表示層活動可以隨意組合,實現(xiàn)不同的業(yè)務(wù)邏輯處理數(shù)據(jù)

代理向上游屏蔽數(shù)據(jù)采集的復(fù)雜性,為上游提供數(shù)據(jù)采集接口以獲取數(shù)據(jù)

Internet分層體系結(jié)構(gòu)的本質(zhì)是數(shù)據(jù)的移動,分層體系結(jié)構(gòu)封裝和重用的概念,以及常見的前端和后端。顯然知道如何打包和重用,為什么實現(xiàn)起來如此困難?

活動中的復(fù)雜代碼,是你的痛苦嗎?