亚洲中文字幕乱码亚洲-蜜桃成熟视频在线观看-免费中文字幕视频在线-中国五十路熟妇洗澡视频-亚洲av伊人啪啪c-国产精品成人一区二区-国产自拍视频一区在线观看-成人一区不卡二区三区四区-亚洲情精品中文字幕99在线

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請入駐

架構(gòu)師把接口層藏了20年,Clean Architecture一出全暴露了

0
分享至

2008年,Bob大叔提出Clean Architecture時(shí),一個(gè)核心假設(shè)被多數(shù)人忽略:基礎(chǔ)設(shè)施層(Infrastructure Layer)不是"放數(shù)據(jù)庫和消息隊(duì)列的地方",而是整個(gè)架構(gòu)的"外環(huán)垃圾場"——所有不穩(wěn)定、易變、骯臟的細(xì)節(jié)都被驅(qū)逐至此。

但過去15年,我見過最多的錯(cuò)誤恰恰是反過來的:團(tuán)隊(duì)把業(yè)務(wù)規(guī)則塞進(jìn)ORM配置,讓領(lǐng)域模型去適配Redis的序列化格式,用框架生成的DTO直接穿透六邊形。

今天這篇文章,我想用三個(gè)具體的時(shí)間節(jié)點(diǎn),還原基礎(chǔ)設(shè)施層是如何從"被忽視的技術(shù)細(xì)節(jié)"變成"架構(gòu)決策的核心戰(zhàn)場"。

1996-2005:N層架構(gòu)的"大泥球"時(shí)代

早期企業(yè)應(yīng)用的典型結(jié)構(gòu)是Presentation → Business → Data Access三層。表面清晰,實(shí)則災(zāi)難——基礎(chǔ)設(shè)施代碼像霉菌一樣滲透到每一層。

你能在Business Layer里發(fā)現(xiàn)`SqlConnection`的引用,在單元測試?yán)锉黄葐?dòng)真實(shí)的數(shù)據(jù)庫。Eric Evans在2003年的《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》中痛批這種現(xiàn)象:"技術(shù)實(shí)現(xiàn)污染了領(lǐng)域概念。"

當(dāng)時(shí)的"基礎(chǔ)設(shè)施"甚至不是一個(gè)獨(dú)立概念。數(shù)據(jù)庫訪問、日志、緩存、外部API調(diào)用,全部以靜態(tài)工具類或單例模式散落在各處。一個(gè)需求變更——比如從SQL Server遷移到Oracle——往往意味著80%的代碼需要重寫。

這個(gè)階段的核心矛盾:基礎(chǔ)設(shè)施與業(yè)務(wù)邏輯的深度耦合,讓"可替換性"成為笑話。

2005-2012:六邊形架構(gòu)的"端口與適配器"革命

Alistair Cockburn的六邊形架構(gòu)(Hexagonal Architecture)徹底改變了游戲規(guī)則。他引入了兩個(gè)關(guān)鍵概念:

端口(Ports): 應(yīng)用程序定義"我需要什么"——比如`IOrderRepository`,一個(gè)純粹的接口,位于領(lǐng)域?qū)觾?nèi)部。

適配器(Adapters): 基礎(chǔ)設(shè)施實(shí)現(xiàn)"我如何提供"——比如`SqlOrderRepository`或`MongoOrderRepository`,位于領(lǐng)域?qū)油獠俊?/p>

這個(gè)設(shè)計(jì)的精妙之處在于依賴方向的反轉(zhuǎn)。領(lǐng)域?qū)硬辉僦罃?shù)據(jù)庫的存在,它只知道"保存訂單"這個(gè)抽象契約。基礎(chǔ)設(shè)施層成為純粹的"插件",可以被替換、被Mock、被延遲到最后一刻實(shí)現(xiàn)。

但實(shí)踐中出現(xiàn)了第一批陷阱。我見過太多團(tuán)隊(duì)把"適配器"誤解為"簡單的翻譯層",結(jié)果寫出了"智能倉庫"(Smart Repository)——在數(shù)據(jù)訪問層里塞入業(yè)務(wù)規(guī)則,比如"如果訂單金額超過1萬,自動(dòng)觸發(fā)風(fēng)控檢查"。

Cockburn的原話被選擇性遺忘:「適配器應(yīng)該薄得像一張紙,只負(fù)責(zé)技術(shù)轉(zhuǎn)換,不做任何業(yè)務(wù)決策。」

2012-2024:Clean Architecture的"同心圓"與邊界戰(zhàn)爭

Bob大叔在《Clean Architecture》中把六邊形的思想推向了極致。他用同心圓模型定義了四條邊界規(guī)則:

1. 依賴規(guī)則:內(nèi)層不依賴外層

2. 抽象規(guī)則:外層通過接口與內(nèi)層對(duì)話

3. 穩(wěn)定規(guī)則:越向內(nèi),抽象程度越高、變更頻率越低

4. 細(xì)節(jié)規(guī)則:數(shù)據(jù)庫、框架、UI,全部屬于最外層

這個(gè)模型澄清了一個(gè)長期混淆的問題:接口到底屬于哪一層?

答案是——接口的定義屬于內(nèi)層(領(lǐng)域?qū)樱?,接口的?shí)現(xiàn)屬于外層(基礎(chǔ)設(shè)施層)。`IOrderRepository.cs`放在Domain項(xiàng)目,`OrderRepository.cs`放在Infrastructure項(xiàng)目。聽起來簡單,但GitHub上超過60%的所謂"Clean Architecture"模板都把這個(gè)搞反了。

另一個(gè)常見陷阱是"領(lǐng)域泄漏的工具類"。團(tuán)隊(duì)為了DRY(Don't Repeat Yourself),把字符串處理、日期計(jì)算、貨幣格式化等"通用功能"提取到Infrastructure層的Utils命名空間。三個(gè)月后,領(lǐng)域?qū)拥腵Order`實(shí)體開始調(diào)用`StringUtils.Slugify()`,Clean Architecture的邊界形同虛設(shè)。

正確的做法?這些工具如果是純函數(shù)、無外部依賴,應(yīng)該放在領(lǐng)域?qū)幼鳛橹祵?duì)象或領(lǐng)域服務(wù);如果涉及框架或I/O,才允許留在基礎(chǔ)設(shè)施層,且必須通過接口被領(lǐng)域?qū)诱{(diào)用。

2024年的新戰(zhàn)場:框架驅(qū)動(dòng)設(shè)計(jì)的反噬

最近五年,一個(gè)更隱蔽的問題浮現(xiàn):框架驅(qū)動(dòng)設(shè)計(jì)(Framework-Driven Design)。Spring Boot、.NET Core、NestJS的"約定優(yōu)于配置"哲學(xué),讓基礎(chǔ)設(shè)施層的決策被框架默認(rèn)值綁架。

團(tuán)隊(duì)不再問"我們的領(lǐng)域需要什么端口",而是問"Spring Data JPA怎么實(shí)現(xiàn)這個(gè)查詢"。領(lǐng)域模型被注解淹沒,`@Entity`、`@Table`、`@Column`這些基礎(chǔ)設(shè)施細(xì)節(jié)直接烙印在領(lǐng)域類上。

這不是技術(shù)問題,是認(rèn)知問題。當(dāng)你說"先用JPA快速實(shí)現(xiàn),以后有需要再抽象",你已經(jīng)放棄了架構(gòu)的進(jìn)化能力。那個(gè)"以后"永遠(yuǎn)不會(huì)來,因?yàn)榧夹g(shù)債務(wù)的利息每天都在復(fù)利增長。

我見過一個(gè)支付系統(tǒng)的核心代碼:領(lǐng)域?qū)拥腵Payment`類引用了`javax.persistence.*`,單元測試必須啟動(dòng)Spring上下文,一次簡單的金額計(jì)算需要200毫秒。他們的"基礎(chǔ)設(shè)施層"不存在——整個(gè)應(yīng)用就是一個(gè)巨大的基礎(chǔ)設(shè)施。

打破這個(gè)困局的具體做法:在項(xiàng)目中強(qiáng)制規(guī)定,領(lǐng)域?qū)拥腵.cs`或`.java`文件如果出現(xiàn)了任何第三方`import`或`using`,CI直接拒絕合并。這個(gè)看似極端的規(guī)則,反而倒逼團(tuán)隊(duì)認(rèn)真思考邊界的位置。

基礎(chǔ)設(shè)施層的終極價(jià)值,不在于它"有什么",而在于它"沒有什么"。沒有業(yè)務(wù)規(guī)則,沒有領(lǐng)域概念,沒有框架假設(shè)——只有對(duì)端口的忠實(shí)實(shí)現(xiàn),和對(duì)技術(shù)細(xì)節(jié)的徹底封裝。

當(dāng)你的團(tuán)隊(duì)爭論"這個(gè)該放Domain還是Infrastructure"時(shí),最好的檢驗(yàn)標(biāo)準(zhǔn)是什么?

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
兵推顯示:美日一旦介入臺(tái)海,1個(gè)月內(nèi),中國導(dǎo)彈將帶走過半戰(zhàn)艦

兵推顯示:美日一旦介入臺(tái)海,1個(gè)月內(nèi),中國導(dǎo)彈將帶走過半戰(zhàn)艦

桑啟紅原
2026-04-16 05:40:37
知名主播因新政策要求,無奈直播露臉,取關(guān)粉絲數(shù)量多達(dá)百萬

知名主播因新政策要求,無奈直播露臉,取關(guān)粉絲數(shù)量多達(dá)百萬

新游戲大妹子
2026-04-14 13:05:06
沉默2天后,中方通告全球,藏南是中國領(lǐng)土,并送給印度一個(gè)忠告

沉默2天后,中方通告全球,藏南是中國領(lǐng)土,并送給印度一個(gè)忠告

軍機(jī)Talk
2026-04-15 11:29:39
空房交物業(yè)費(fèi)合理嗎?2026年物業(yè)費(fèi)新規(guī):這4種情況一分不掏

空房交物業(yè)費(fèi)合理嗎?2026年物業(yè)費(fèi)新規(guī):這4種情況一分不掏

老特有話說
2026-04-15 15:11:16
瀏覽器原地變龍蝦!Chrome上線Skills,技能一鍵復(fù)用幫你干活

瀏覽器原地變龍蝦!Chrome上線Skills,技能一鍵復(fù)用幫你干活

量子位
2026-04-15 13:44:27
如今隱居上海的黃梅瑩,和兒子徹底劃清界限后,75歲越活越瀟灑

如今隱居上海的黃梅瑩,和兒子徹底劃清界限后,75歲越活越瀟灑

青橘罐頭
2026-04-15 14:54:15
娃生多了真的好顯老,之前多美啊,這臉?biāo)ダ系恼娴暮芸臁?>
    </a>
        <h3>
      <a href=一口娛樂
2026-04-15 19:35:12
黎以美三方會(huì)談結(jié)束,同意將正式啟動(dòng)黎以直接談判

黎以美三方會(huì)談結(jié)束,同意將正式啟動(dòng)黎以直接談判

澎湃新聞
2026-04-15 06:33:17
高市難辭其咎!中日航線全部停擺后,高市服軟將村田晃大投入大牢

高市難辭其咎!中日航線全部停擺后,高市服軟將村田晃大投入大牢

今墨緣
2026-04-16 02:17:24
被滲透?中國軍工出現(xiàn)內(nèi)鬼,被抓時(shí)人贓并獲,作案全過程曝光

被滲透?中國軍工出現(xiàn)內(nèi)鬼,被抓時(shí)人贓并獲,作案全過程曝光

青橘罐頭
2026-04-16 07:15:36
2011年,她全裸接受記者采訪,并稱:我敢看你們,你們敢看我嗎?

2011年,她全裸接受記者采訪,并稱:我敢看你們,你們敢看我嗎?

觸摸史跡
2026-04-08 16:02:42
許家印終于認(rèn)罪!但2.4萬億窟窿里,還有900億分紅追不回來……

許家印終于認(rèn)罪!但2.4萬億窟窿里,還有900億分紅追不回來……

毯叔盤錢
2026-04-15 18:59:43
上海電影院現(xiàn)場被捉奸,帶情夫當(dāng)老公面出軌,狗血女主角真容曝光

上海電影院現(xiàn)場被捉奸,帶情夫當(dāng)老公面出軌,狗血女主角真容曝光

靜若梨花
2026-03-01 16:25:46
深圳嚴(yán)查!多個(gè)停車場被罰

深圳嚴(yán)查!多個(gè)停車場被罰

南方都市報(bào)
2026-04-15 14:37:21
上海老板夫妻命喪自家店鋪,一張帶血手印的《每周廣播電視報(bào)》,讓警方破獲30年前命案

上海老板夫妻命喪自家店鋪,一張帶血手印的《每周廣播電視報(bào)》,讓警方破獲30年前命案

極目新聞
2026-04-15 17:45:11
西安一男子中獎(jiǎng)1038余萬元:很幸運(yùn),仍會(huì)堅(jiān)持工作

西安一男子中獎(jiǎng)1038余萬元:很幸運(yùn),仍會(huì)堅(jiān)持工作

大風(fēng)新聞
2026-04-15 16:52:10
中國肺癌發(fā)病率世界第一!提醒:罪魁禍?zhǔn)滓丫境觯?種食物要少吃

中國肺癌發(fā)病率世界第一!提醒:罪魁禍?zhǔn)滓丫境觯?種食物要少吃

健康之光
2026-03-23 20:10:05
人民幣突然大漲!有存款的要透著樂,5類人受益,2類人要虧

人民幣突然大漲!有存款的要透著樂,5類人受益,2類人要虧

小談食刻美食
2026-04-15 08:28:21
外媒推測:中國正研制射程更遠(yuǎn)超遠(yuǎn)程空空導(dǎo)彈,霹靂17只是個(gè)開始

外媒推測:中國正研制射程更遠(yuǎn)超遠(yuǎn)程空空導(dǎo)彈,霹靂17只是個(gè)開始

阿龍聊軍事
2026-04-15 10:48:15
田亮葉一茜祝賀森碟成年,18歲寫真酷似母親

田亮葉一茜祝賀森碟成年,18歲寫真酷似母親

暖心萌阿菇?jīng)?/span>
2026-04-15 19:23:16
2026-04-16 07:55:00
算力游俠
算力游俠
游走在API與報(bào)錯(cuò)之間,用魔法(AI)打敗魔法的非硬核玩家。
1422文章數(shù) 14關(guān)注度
往期回顧 全部

科技要聞

小鵬最貴SUV預(yù)售39.98萬!L4架構(gòu)3000TOPS算力

頭條要聞

歐洲100萬人請?jiān)敢笾撇靡陨?以總理:歐洲道德軟弱

頭條要聞

歐洲100萬人請?jiān)敢笾撇靡陨?以總理:歐洲道德軟弱

體育要聞

三球準(zhǔn)絕殺戴大金鏈:轟30+10自我救贖

娛樂要聞

謝娜現(xiàn)身環(huán)球影城,牽手女兒溫馨有愛

財(cái)經(jīng)要聞

業(yè)績失速的Lululemon:"健康"人設(shè)崩塌?

汽車要聞

空間絲毫不用妥協(xié) 小鵬GX首發(fā)評(píng)測

態(tài)度原創(chuàng)

時(shí)尚
房產(chǎn)
游戲
親子
軍事航空

赫本愛穿的傘裙,好優(yōu)雅!

房產(chǎn)要聞

重磅調(diào)規(guī)!341畝商改住+中小學(xué)用地!寶龍城這把穩(wěn)了?

天才!修車模擬器撞檔《地平線6》:賽完車去修車

親子要聞

南方家長注意!華南汛期提前、潮濕加碼,這種“呼吸道殺手”正全年潛伏

軍事要聞

封鎖霍爾木茲海峽后 美釋放雙重信號(hào)

無障礙瀏覽 進(jìn)入關(guān)懷版