項(xiàng)目接入IMSDK架構(gòu)設(shè)計(jì)的一點(diǎn)心得

我之前待的項(xiàng)目組將具有聊天功能的app改造成即時通訊IMSDK,跟環(huán)信,融云這種IMSDK最大的不同就是用戶體系由SDK維護(hù),減少開發(fā)人員在項(xiàng)目中引入聊天功能的工作量,現(xiàn)在調(diào)動到新的項(xiàng)目組,目前主要負(fù)責(zé)接入IMSDK及相關(guān)UI界面的重寫,由IMSDK的開發(fā)人員角色轉(zhuǎn)換到宿主角色,這種感覺挺奇妙的,讓我可以更清楚從使用者思考IMSDKAPI設(shè)計(jì)的合理性和易用性,接下來我想談?wù)勥@幾個月使用IMSDK的一點(diǎn)心得。

IMSDK的優(yōu)勢在于IM本身維護(hù)一套DB數(shù)據(jù)庫的管理,使用者只需調(diào)用相關(guān)的API即可,不用自己維護(hù)DB數(shù)據(jù)庫的數(shù)據(jù)更新和管理,但是這樣也有一個問題,但數(shù)據(jù)不滿足項(xiàng)目要求,無法直接增加數(shù)據(jù)庫字段,SDK并沒有開放操作數(shù)據(jù)庫的接口,如此一來,有兩套方案:

方案1:

方案一

從IMSDK的API層獲取到數(shù)據(jù)模型,再根據(jù)項(xiàng)目需求將需要的字段存到自己建立的表中,自己維護(hù)DB層數(shù)據(jù),優(yōu)勢在于數(shù)據(jù)庫自己管理,可以根據(jù)項(xiàng)目需求增加相應(yīng)的字段,思路簡單,處理起來也比較容易,但是缺點(diǎn)在于拋棄了IMSDK的數(shù)據(jù)庫自身管理的優(yōu)勢,并且需要維護(hù)自身數(shù)據(jù)和IMSDK數(shù)據(jù)庫的同步更新,容易出錯,后期隨著業(yè)務(wù)發(fā)展將會更加復(fù)雜,不便于后期維護(hù)和擴(kuò)展。因此我采用了另一套方案:


方案二

我建立了數(shù)據(jù)加工層,左邊是IMSDK的項(xiàng)目結(jié)構(gòu),右邊是我們主項(xiàng)目的結(jié)構(gòu)。整體思路是盡可能的使用IMSDK的維護(hù)好的數(shù)據(jù)庫,在IMSDK數(shù)據(jù)庫無法滿足要求才會建立相應(yīng)的DB層,在數(shù)據(jù)加工層中將IMSDK的model層和主項(xiàng)目的model層進(jìn)行的數(shù)據(jù)處理,拋出加工好的model層供ViewController調(diào)用,viewController不必關(guān)心數(shù)據(jù)加工層的具體細(xì)節(jié),只需要獲取相應(yīng)的model數(shù)據(jù)更新UI層即可,實(shí)現(xiàn)數(shù)據(jù)跟界面的隔離。整套設(shè)計(jì)思路來說,最大層度的利用了IMSDK維護(hù)好的數(shù)據(jù)庫,不必關(guān)心IMSDK中的數(shù)據(jù)管理和數(shù)據(jù)更新,我只需維護(hù)好主項(xiàng)目的DB層數(shù)據(jù)更新即可,這樣有利于后期的維護(hù)和擴(kuò)展,也減少數(shù)據(jù)維護(hù)的工作量。

目前項(xiàng)目中的第一期需求已經(jīng)基本完畢,整個方案的設(shè)計(jì)也是在不斷摸索中,整體思路是數(shù)據(jù)跟UI隔離,盡量使用IMSDK維護(hù)好的數(shù)據(jù),整套方案的設(shè)計(jì)還需經(jīng)受項(xiàng)目版本迭代,才能證實(shí)是否是一套合理的方案,如果后期有更好的方案設(shè)計(jì),我以后再補(bǔ)充。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容