一 架構到底是什么建芙?

根據(jù)《從零開始學架構》課程整理和摘要

0、我的理解

架構懂扼,就是框架結構禁荸,比如蓋一棟房子的鋼筋框架即是架構,軟件架構即是軟件的整體的結構性的東西阀湿,一棟房屋的結構決定了房屋結不結實赶熟、大體外觀、能不能滿足居住要求陷嘴;同樣軟件架構決定了整個軟件是不是高可用的映砖、性能好不好、能不能解決現(xiàn)實的問題灾挨。

1邑退、系統(tǒng)

問題:
1、架構和框架有什么區(qū)別劳澄?
2地技、Linux有架構、mysql有架構秒拔、JVM架構乓土、使用這些系統(tǒng)開發(fā)的業(yè)務系統(tǒng)也有架構。應該關注什么架構溯警?
3、微信整體有架構狡相、微信登錄系統(tǒng)也有架構梯轻、支付系統(tǒng)也有架構,我們談微信架構的時候尽棕,主要談什么架構喳挑?

為了理解架構的概念,文中先梳理了幾個核心而又相似概念。

軟件架構有時候也叫系統(tǒng)架構伊诵,那么系統(tǒng)是什么单绑?作者提出幾個系統(tǒng)定義的關鍵內(nèi)容:
1、關聯(lián)
系統(tǒng)是由一組有關聯(lián)的個體組成曹宴,比如車輪子搂橙、方向盤、車架組成了騎車笛坦。沒有關聯(lián)的個體放在一起不能稱為一個系統(tǒng)区转。

2、規(guī)則
系統(tǒng)內(nèi)個體需要按照指定的規(guī)則運行版扩,而不是各自為政废离。規(guī)則規(guī)定了系統(tǒng)內(nèi)個體的分工和寫作方式。
如:汽車發(fā)動機負責產(chǎn)生動力礁芦,然后通過變速器和傳動軸將動力輸出到車輪子上蜻韭,從而驅(qū)動汽車前進。

3柿扣、能力
系統(tǒng)能力與個體能力有差別肖方,系統(tǒng)能力不是各個個體能力之和,二是產(chǎn)生了新的能力窄刘。
如:汽車能夠載重前行窥妇,而它的部件顯然不具備這種能力。

子系統(tǒng)定義:子系統(tǒng)也是由一組關聯(lián)的個體組成娩践,根據(jù)特定規(guī)則運行活翩,完成單個個體不能完成的工作。

通過這個定義你也可以了解到翻伺,其實系統(tǒng)和子系統(tǒng)只是看的視角不同材泄,一個系統(tǒng)從更大的系統(tǒng)來看它就是個子系統(tǒng);比如:
1吨岭、微信本身是個系統(tǒng)拉宗,它包括聊天、登錄辣辫、支付旦事、朋友圈等子系統(tǒng)。
2急灭、朋友圈這個系統(tǒng)又包括動態(tài)姐浮、評論、點贊子系統(tǒng)葬馋。
3卖鲤、評論這個系統(tǒng)可能又可以分為防刷子系統(tǒng)肾扰、審核子系統(tǒng)、存儲子系統(tǒng)蛋逾、
4集晚、評論子系統(tǒng)可能不能進一步劃分了,而是包括各個模塊或組件区匣,模塊或組件又是另外一個維度的系統(tǒng)偷拔,比如MySQL、Redis等是存儲子系統(tǒng)沉颂、但不是業(yè)務子系統(tǒng)条摸。

2、模塊與組件

這兩個概念常容易混淆铸屉、主要兩者的定義不好理解钉蒲,模塊和組件都是系統(tǒng)的組成部分,只是從不同的角度來拆分系統(tǒng)而已彻坛。
從邏輯角度來拆分顷啼、得到的就是模塊;從物理角度來拆分昌屉,得到的單元就是組件钙蒙。
劃分模塊的目的是為了職責分離、劃分組件的目的是為了單元復用间驮。組件在英文中為componet翻譯成中文也有零件的意思钳垮,零件比較好理解惜姐,獨立且可替換病蛉。
(到這里面讓我想到了我們常畫的圖汽烦,有時候是模塊與組件混合,還是沒有理解這兩個概念造成的屹篓,對于設計文檔來說疙渣,我們以模塊為單元畫架構圖合適,對于外部的介紹堆巧,用組件構成的架構圖更合適)

以一個網(wǎng)站系統(tǒng)來說妄荔,假設做一個學生信息管理系統(tǒng)。這個系統(tǒng)從邏輯角度來說谍肤,可以分為登錄注冊模塊啦租、個人信息模塊、個人成績模塊荒揣;從物理角度來拆分刷钢,可以拆分為Nginx、Web服務器乳附、MySQL内地。

3、框架和架構

框架和架構也是相似的概念赋除,而兩者具有較強的聯(lián)系阱缓。

軟件的框架(software framework)通常指為了實現(xiàn)業(yè)界的標準或完成特定的基本任務的軟件組件組件規(guī)范、也指為了實現(xiàn)軟件組件規(guī)范時举农,提供規(guī)范要求的基礎功能的軟件產(chǎn)品荆针。

關鍵部分:
1、框架是組件規(guī)范: 比如MVC是常見的軟件開發(fā)規(guī)范颁糟、類似還有MVP航背、MVVM、J2EE框架棱貌。

2玖媚、框架提供基礎功能產(chǎn)品::例如Spring MVC是MVC的開發(fā)框架、除了滿足MVC的規(guī)范要求婚脱、Spring還提供了許多基礎功能來幫助我們實現(xiàn)功能今魔,包括注解、等許多基礎功能障贸。

軟件架構指軟件系統(tǒng)的“基礎結構”错森、創(chuàng)建這些結構的準則、以及對這些結構的描述篮洁。

框架關注的是規(guī)范涩维,架構關注的是結構、框架的英文是Framework袁波,架構的英文是Architecture瓦阐。
實際工作中,常聽到似是而非的說法锋叨,比如我們系統(tǒng)是MVC架構垄分、我們系統(tǒng)基于SSH框架開發(fā)的等。

存在這個問題原因是娃磺,在架構中基礎結構沒有明確定義薄湿。
還是以學生系統(tǒng)為例,以邏輯結構劃分如下:


邏輯劃分架構

物理部署架構:


物理部署架構

從開發(fā)角度來說偷卧,采用MVC架構如下:


MVC框架

4、重新定義架構

參考維基百科的定義听诸,我將架構重新定義為:軟件架構指軟件系統(tǒng)的頂層結構坐求。

這個定義看似很簡單,但包含的信息很豐富晌梨,基本上把系統(tǒng)桥嗤、子系統(tǒng)须妻、模塊、組件泛领、架構等概念都串起來了荒吏,我來詳細解釋一下。

首先渊鞋,“系統(tǒng)是一群關聯(lián)個體組成”绰更,這些“個體”可以是“子系統(tǒng)”“模塊”“組件”等;架構需要明確系統(tǒng)包含哪些“個體”锡宋。

其次儡湾,系統(tǒng)中的個體需要“根據(jù)某種規(guī)則”運作,架構需要明確個體運作和協(xié)作的規(guī)則执俩。

第三徐钠,維基百科定義的架構用到了“基礎結構”這個說法,我改為“頂層結構”奠滑,可以更好地區(qū)分系統(tǒng)和子系統(tǒng)丹皱,避免將系統(tǒng)架構和子系統(tǒng)架構混淆在一起導致架構層次混亂。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宋税,一起剝皮案震驚了整個濱河市摊崭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杰赛,老刑警劉巖呢簸,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乏屯,居然都是意外死亡根时,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門辰晕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛤迎,“玉大人,你說我怎么就攤上這事含友√骜桑” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵窘问,是天一觀的道長辆童。 經(jīng)常有香客問我,道長惠赫,這世上最難降的妖魔是什么把鉴? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮儿咱,結果婚禮上庭砍,老公的妹妹穿的比我還像新娘场晶。我一直安慰自己,他們只是感情好怠缸,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布峰搪。 她就那樣靜靜地躺著,像睡著了一般凯旭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上使套,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天罐呼,我揣著相機與錄音,去河邊找鬼侦高。 笑死嫉柴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奉呛。 我是一名探鬼主播计螺,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞧壮!你這毒婦竟也來了登馒?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咆槽,失蹤者是張志新(化名)和其女友劉穎陈轿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秦忿,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡麦射,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灯谣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潜秋。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胎许,靈堂內(nèi)的尸體忽然破棺而出峻呛,到底是詐尸還是另有隱情,我是刑警寧澤呐萨,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布杀饵,位于F島的核電站,受9級特大地震影響谬擦,放射性物質(zhì)發(fā)生泄漏切距。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一惨远、第九天 我趴在偏房一處隱蔽的房頂上張望谜悟。 院中可真熱鬧话肖,春花似錦、人聲如沸葡幸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔚叨。三九已至床蜘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔑水,已是汗流浹背邢锯。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搀别,地道東北人丹擎。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像歇父,于是被迫代替她去往敵國和親蒂培。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 1榜苫、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,982評論 3 119
  • 前天我做了一個新的系列微課《學邏輯护戳,練幽默》的展示課(點擊可免費觀看),然后我轉發(fā)到了微信朋友圈单刁,一個社群伙伴在下...
    Tom教練閱讀 835評論 2 2
  • 前提灸异,添加支持的語言 普通文本 1.創(chuàng)建Localizable.strings 文件 2.對Localizable...
    逍遙門徒閱讀 390評論 0 2
  • 李梓葉是家里的第五代,這樣五代同堂的家庭在村里唯吾一家羔飞。 村里人都說祖爺爺是最有福氣的人肺樟。他今年已經(jīng)...
    蝶澈的獨舞閱讀 409評論 0 0