工程架構(gòu)持續(xù)演進

前言

前面的組件化思考和落地介紹了組件化在我們項目中的大致設計惠拭,實際落地效果也不錯柄沮。同時也遇到了多App業(yè)務迭代的情況,于是落地了融合開發(fā)方式-單工程多target的多App方案钓辆。
本文基于實際迭代中遇到的問題,繼續(xù)分析當下存在的問題待牵,以及對于未來迭代方向做一個梳理。

正文

整體視角

首先介紹工程當前整體設計喇勋,整體工程視角的架構(gòu)圖如下:


業(yè)務實現(xiàn)層和業(yè)務接口層缨该,是常迭代的業(yè)務部分;

  • 業(yè)務接口層川背,存放業(yè)務組件對外的能力贰拿,這些能力大部分用接口來表述。

  • 業(yè)務實現(xiàn)層熄云,存放對接口的具體業(yè)務實現(xiàn)膨更,承載著業(yè)務組件的大部分邏輯。

  • 業(yè)務基礎層缴允,App內(nèi)通用的基礎能力荚守,通常包數(shù)據(jù)結(jié)構(gòu)、App級UI組件练般、基礎服務能力矗漾。

  • 通用基礎層,工程的二方庫和三方庫依賴薄料,引入更多擴展能力敞贡。

組件視角

組件內(nèi)部的結(jié)構(gòu)設計,主體是分為對外部分和對內(nèi)部分摄职。

對外部分嫡锌,其他業(yè)務組件可以依賴虑稼,整體可以分為業(yè)務接口層琳钉、服務接口層和業(yè)務基礎層势木。
業(yè)務接口層,存放業(yè)務抽象接口歌懒、枚舉啦桌、常量,封裝組件業(yè)務能力及皂;
服務接口層甫男,存放以服務形式提供的業(yè)務能力,該服務通常是由業(yè)務組件進行維護验烧,所以不納入App通用的服務層板驳。
業(yè)務基礎層,存放業(yè)務對外提供的UI基礎能力和數(shù)據(jù)接口碍拆,這部分UI和數(shù)據(jù)由業(yè)務業(yè)務組件進行維護若治,所以不納入App通用的基礎層。

對內(nèi)部分感混,是其他業(yè)務組件不可依賴端幼,是對外部分中業(yè)務接口、服務接口的具體實現(xiàn)弧满。

問題分析

業(yè)務迭代角度

1婆跑、業(yè)務組件內(nèi)存在其他業(yè)務組件邏輯,最常見的就是業(yè)務組件A因為存在部分視圖庭呜、邏輯是屬于業(yè)務B滑进、業(yè)務C、業(yè)務D募谎,于是業(yè)務組件A就在組件內(nèi)直接引入組件B/C/D扶关,長期不便于業(yè)務做權(quán)限管控和穩(wěn)定性治理,同時也會增加未來迭代的理解成本近哟;
2驮审、業(yè)務組件對外提供的業(yè)務能力、UI組件吉执、基礎功能等疯淫,都由接口層承載,即使只是依賴組件A的某個特定功能戳玫,也要直接依賴整個組件A熙掺;
...

工程架構(gòu)角度

1、接口層與實現(xiàn)層咕宿,基礎層與實現(xiàn)層都有隔離币绩,但是仍然存在同層之間相互依賴較多的情況蜡秽,甚至會有UI組件、數(shù)據(jù)層依賴服務層情況缆镣;
2芽突、多App場景,如果想要讓某個App下去除某個組件董瞻,由于組件依賴較多寞蚌,會導致潛在較多風險;
...

架構(gòu)演進

架構(gòu)演進的思路钠糊,主要考慮當下要素:
1挟秤、多App迭代述求,以融合開發(fā)方式為多App提效抄伍,同時保留業(yè)務細節(jié)差異化能力艘刚,以及整體業(yè)務模塊剝離的包體積優(yōu)化空間;
2截珍、SaaS同構(gòu)迭代攀甚,未來相關(guān)業(yè)務既要接入SaaS,又要迭代SaaS笛臣;
3云稚、質(zhì)量和效率提升,更加清晰的工程架構(gòu)來承載復雜業(yè)務沈堡,層級之間更加清晰并有防劣化静陈,復雜業(yè)務組件有良好設計來降低理解成本

基于上述分析和考慮,對原來架構(gòu)進行進一步調(diào)整:


改動點分析

1诞丽、部分業(yè)務組件平臺化鲸拥,組件內(nèi)部業(yè)務邏輯實現(xiàn)依賴反轉(zhuǎn),同時沉淀出業(yè)務的數(shù)據(jù)層和UI基礎層僧免;
2刑赶、服務層建立,架構(gòu)更加清晰合理懂衩,避免基礎層依賴服務層撞叨,同時也方便做依賴防劣化卡口;
3浊洞、數(shù)據(jù)治理牵敷,專注于數(shù)據(jù)邏輯,只能被上層業(yè)務引用法希,不依賴其他業(yè)務組件和服務層枷餐;
4、UI基礎層搭建苫亦,業(yè)務UI基礎能力沉淀毛肋,可以依賴只能被上層業(yè)務引用怨咪,不依賴其他業(yè)務組件和服務層;
5润匙、業(yè)務基礎庫和通用基礎庫分隔诗眨,業(yè)務基礎庫只服務于當前工程,通用基礎庫服務于類SaaS的多宿主趁桃;
6辽话、配合多包SOP調(diào)整差異化組件,將大部分固定差異用配置化的方式進行處理卫病;

總結(jié)

架構(gòu)演進是一件需要持之以恒的事情,要權(quán)衡好其中的效率提升和維護成本典徘。
架構(gòu)不是越復雜越好蟀苛。越多的層級固然能更好做邏輯拆分、依賴隔離逮诲,但是也有更多的開發(fā)能力和理解能力要求帜平。
如無必要,勿增實體梅鹦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裆甩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子齐唆,更是在濱河造成了極大的恐慌嗤栓,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箍邮,死亡現(xiàn)場離奇詭異茉帅,居然都是意外死亡,警方通過查閱死者的電腦和手機锭弊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門堪澎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人味滞,你說我怎么就攤上這事樱蛤。” “怎么了剑鞍?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵昨凡,是天一觀的道長。 經(jīng)常有香客問我攒暇,道長土匀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任形用,我火速辦了婚禮就轧,結(jié)果婚禮上证杭,老公的妹妹穿的比我還像新娘。我一直安慰自己妒御,他們只是感情好解愤,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乎莉,像睡著了一般送讲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惋啃,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天哼鬓,我揣著相機與錄音,去河邊找鬼边灭。 笑死异希,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绒瘦。 我是一名探鬼主播称簿,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惰帽!你這毒婦竟也來了憨降?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤该酗,失蹤者是張志新(化名)和其女友劉穎授药,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垂涯,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡烁焙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耕赘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骄蝇。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖操骡,靈堂內(nèi)的尸體忽然破棺而出九火,到底是詐尸還是另有隱情,我是刑警寧澤册招,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布岔激,位于F島的核電站,受9級特大地震影響是掰,放射性物質(zhì)發(fā)生泄漏虑鼎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炫彩。 院中可真熱鬧匾七,春花似錦、人聲如沸江兢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杉允。三九已至邑贴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叔磷,已是汗流浹背拢驾。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留世澜,地道東北人独旷。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像寥裂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子案疲,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容