版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 Page * MERGEFORMAT 8C4分層架構(gòu)模型概述目 錄 TOC o 1-3 h z u HYPERLINK l _Toc44450132 一、概述 PAGEREF _Toc44450132 h 3 HYPERLINK l _Toc44450133 1.第 1 層:系統(tǒng)上下文 PAGEREF _Toc44450133 h 3 HYPERLINK l _Toc44450134 2.第 2 層:容器 PAGEREF _Toc44450134 h 4 HYPERLINK l _Toc44450135 3.第 3 層:組件 PAGEREF _Toc44450135 h 5 HYPERLIN
2、K l _Toc44450136 4.第 4 層:代碼 PAGEREF _Toc44450136 h 6 HYPERLINK l _Toc44450137 二、符號 PAGEREF _Toc44450137 h 7 HYPERLINK l _Toc44450138 三、結(jié)語 PAGEREF _Toc44450138 h 8 概述含糊不清的軟件架構(gòu)圖容易導(dǎo)致誤解,這可能會拖慢一個優(yōu)秀團(tuán)隊(duì)的前進(jìn)步伐。在我們的行業(yè)中,我們真的應(yīng)該努力創(chuàng)建出更好的軟件架構(gòu)圖。多年來,我自己參與軟件開發(fā),并與世界各地的團(tuán)隊(duì)合作,基于這些經(jīng)驗(yàn),我建立了一個稱之為“C4 模型”的東西。C4 代表上下文(Context)、容
3、器(Container)、組件(Component)和代碼(Code)一系列分層的圖表,可以用這些圖表來描述不同縮放級別的軟件架構(gòu),每種圖表都適用于不同的受眾??梢詫⑵湟暈榇a的谷歌地圖。要為你的代碼創(chuàng)建地圖,首先需要一組通用的抽象來創(chuàng)建一種無處不在的語言,用來描述軟件系統(tǒng)的靜態(tài)結(jié)構(gòu)。C4 模型使用容器(應(yīng)用程序、數(shù)據(jù)存儲、微服務(wù)等)、組件和代碼來描述一個軟件系統(tǒng)的靜態(tài)結(jié)構(gòu)。它還考慮到使用軟件系統(tǒng)的人。第 1 層:系統(tǒng)上下文第 1 層是系統(tǒng)上下文圖,它顯示了你正在構(gòu)建的軟件系統(tǒng),以及系統(tǒng)與用戶及其他軟件系統(tǒng)之間的關(guān)系。以下是一個系統(tǒng)上下文圖的示例,描述了一個互聯(lián)網(wǎng)銀行系統(tǒng)的系統(tǒng)上下文:銀行的個
4、人客戶使用互聯(lián)網(wǎng)銀行系統(tǒng)查看有關(guān)銀行賬戶的信息并進(jìn)行支付?;ヂ?lián)網(wǎng)銀行系統(tǒng)使用銀行現(xiàn)有的大型機(jī)銀行系統(tǒng)來執(zhí)行此操作,并使用銀行現(xiàn)有的電子郵件系統(tǒng)向客戶發(fā)送電子郵件。圖中的顏色表示哪些軟件系統(tǒng)已經(jīng)存在(灰色)以及待構(gòu)建的系統(tǒng)(藍(lán)色)。第 2 層:容器第 2 層是一個容器圖,將軟件系統(tǒng)放大,顯示組成該軟件系統(tǒng)的容器(應(yīng)用程序、數(shù)據(jù)存儲、微服務(wù)等)。技術(shù)決策也是該圖的關(guān)鍵部分。以下是互聯(lián)網(wǎng)銀行系統(tǒng)的容器圖示例。它顯示了互聯(lián)網(wǎng)銀行系統(tǒng)(虛線框)由五個容器組成:服務(wù)器端 Web 應(yīng)用程序、客戶端單頁面應(yīng)用程序、移動應(yīng)用程序、服務(wù)器端 API 應(yīng)用程序和數(shù)據(jù)庫。Web 應(yīng)用程序是一個 Java/Spring
5、 MVC Web 應(yīng)用程序,它僅提供靜態(tài)內(nèi)容(HTML、CSS 和 JavaScript),包括組成單頁應(yīng)用程序的內(nèi)容。單頁面應(yīng)用程序是一個運(yùn)行在客戶網(wǎng)絡(luò)瀏覽器中的 Angular 應(yīng)用程序,提供所有的網(wǎng)上銀行功能?;蛘?,客戶可以使用跨平臺 Xamarin 移動應(yīng)用程序訪問互聯(lián)網(wǎng)銀行的部分功能。單頁應(yīng)用程序和移動應(yīng)用程序都調(diào)用 JSON/HTTPS API,這是由服務(wù)器端運(yùn)行的另一個 Java/Spring MVC 應(yīng)用程序提供的。API 應(yīng)用程序從數(shù)據(jù)庫中獲取用戶信息(關(guān)系數(shù)據(jù)庫模式)。API 應(yīng)用程序還使用專有的 XML/HTTPS 接口與現(xiàn)有的大型機(jī)銀行系統(tǒng)進(jìn)行通信,以獲取有關(guān)銀行賬戶或
6、交易的信息。如果需要向客戶發(fā)送電子郵件,API 應(yīng)用程序還會調(diào)用現(xiàn)有的電子郵件系統(tǒng)。第 3 層:組件第 3 層是組件圖,將單個容器放大,以顯示其中的組件。這些組件映射到代碼庫中的真實(shí)抽象(例如一組代碼)。下面是一個虛擬的網(wǎng)上銀行系統(tǒng)的組件圖示例,顯示了 API 應(yīng)用程序中的一些組件(而不是全部)。兩個 Spring MVC REST 控制器為 JSON/HTTPS API 提供訪問點(diǎn),每個控制器隨后使用其他組件訪問數(shù)據(jù)庫和大型機(jī)銀行系統(tǒng)中的數(shù)據(jù)。第 4 層:代碼最后,如果你確實(shí)想要,或者說有這個必要,可以放大個別組件,以顯示該組件的實(shí)現(xiàn)方式。以下是一個虛擬的網(wǎng)上銀行系統(tǒng)的 UML 類圖示例(部
7、分),顯示了組成 MainframeBankingSystemFacade 組件的代碼元素(接口和類)。它表明該組件由很多類組成,實(shí)現(xiàn)細(xì)節(jié)直接反映了代碼。我并不建議創(chuàng)建在這種詳細(xì)程度的圖表,有時候你可以直接從大多數(shù) IDE 中獲取它們。符號C4 模型沒有預(yù)定義任何特定的符號,你在這些示例圖中看到的是一個個簡單的符號,適用于白板、紙張、便簽、索引卡片和各種圖表工具。你也可以使用 UML 作為符號,并適當(dāng)使用包、組件和原型。無論你使用哪種符號,我都會建議讓每個元素都包含名稱、元素類型(即“人”、“軟件系統(tǒng)”,“容器”或“組件”)、技術(shù)選型(如果有的話),以及一些描述性文字。在圖表中包含如此多的文本可能看起來很不尋常,但這些附加文本有助于消除軟件架構(gòu)圖中通常會出現(xiàn)的不明確的表示。即使符號對你來說是顯而易見的,仍然要確保為這些符號提供圖例。圖例中應(yīng)該包括顏色、形狀、首字母縮略詞、線條樣式、邊框、尺寸等。理想情況下,符號應(yīng)該在每個細(xì)節(jié)層次上保持一致。下面是前面顯示的容器圖的圖例。結(jié)語不要忘記了標(biāo)題,它應(yīng)該出現(xiàn)在每個圖表上,以明確地描述每個圖表的類型和范圍(例如,“網(wǎng)上銀行系統(tǒng)的系統(tǒng)上下文圖表”)。C4 模型是一種在不同抽象層次上交
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省泰州市姜堰區(qū)實(shí)驗(yàn)初級中學(xué)2023-2024學(xué)年上學(xué)期第一次學(xué)情調(diào)查八年級數(shù)學(xué)試卷(無答案)
- 人教版八年級上冊英語語法大全
- DB1410T 075-2024黑大豆高產(chǎn)栽培技術(shù)規(guī)程
- 廣東省廣州市2022年中考?xì)v史真題試卷
- 河北省滄州市青縣第二中學(xué)2024-2025學(xué)年七年級上學(xué)期數(shù)學(xué)期中模擬練習(xí)
- 招標(biāo)基礎(chǔ)知識題庫單選題100道及答案解析
- 湘教版五年級下冊科學(xué)教案
- 【+高+中語文】《過秦論》課件+++統(tǒng)編版高中語文選擇性必修中冊
- 八年級下英語5單元教育課件
- 貝多芬介紹課件
- 意見陳述書-新創(chuàng)性答復(fù)模板
- 食品安全定期自查計(jì)劃
- 北京版小學(xué)英語四年級上冊Lesson16說課稿
- 頜面部解剖血管PPT課件
- 31鋼網(wǎng)張力測試作業(yè)指導(dǎo)書
- [精品]如何當(dāng)一名優(yōu)秀科長
- 應(yīng)用型高校創(chuàng)新創(chuàng)業(yè)教育師資隊(duì)伍建設(shè)的問題與路徑
- 疝氣教學(xué)查房課件
- 唐山港京唐港區(qū)36號至40號煤炭泊位堆場、道路、管網(wǎng)及設(shè)備基礎(chǔ)工程施工組織設(shè)計(jì)1
- 流感樣病例個案調(diào)查表(空表).doc
- (完整版)計(jì)量裝置改造組織施工設(shè)計(jì)說明
評論
0/150
提交評論