平時(shí)學(xué)習(xí)一些編程相關(guān)的技術(shù)夭谤,除了買書看之外就是通過搜索引擎找相關(guān)資料棺牧,例如從官網(wǎng)上獲取最新技術(shù)文檔(雖然看不懂英文,但是可以借助翻譯工具達(dá)到這個(gè)目的)或者是在CSDN朗儒、博客園颊乘、思否、infoQ等網(wǎng)站獲取一些編程語言/技術(shù)框架等知識(shí)采蚀。當(dāng)然了疲牵,記得初學(xué)編程的時(shí)候,大多就是去w3cschool和菜鳥教程學(xué)習(xí)榆鼠,一來覺得實(shí)用性相對(duì)比較強(qiáng)纲爸,二來比較系統(tǒng)。
這周一在極客時(shí)間買了一個(gè)知識(shí)付費(fèi)專欄叫做《從0開始學(xué)架構(gòu)》妆够,初看感覺還不錯(cuò)识啦,于是接連下來看了8章,覺得還是有一定的收獲神妹。
讀了《從0開始學(xué)架構(gòu)》颓哮,對(duì)第一篇文章架構(gòu)到底是什么頗有啟發(fā),下面我給大家說說系統(tǒng)和子系統(tǒng)鸵荠、架構(gòu)和框架冕茅、模塊和組件。
一蛹找、系統(tǒng)和子系統(tǒng)
大家對(duì)于系統(tǒng)和子系統(tǒng)這個(gè)概念想必都有所了解姨伤。當(dāng)然了,也有不少十分清楚的。
1.以人體為例,簡(jiǎn)單闡述系統(tǒng)的含義
人體由運(yùn)動(dòng)系統(tǒng)溉仑、神經(jīng)系統(tǒng)劲腿、內(nèi)分泌系統(tǒng)、循環(huán)系統(tǒng)就珠、呼吸系統(tǒng)蛉威、消化系統(tǒng)仿荆、泌尿系統(tǒng)臊泌、生殖系統(tǒng)八大系統(tǒng)構(gòu)成鲤桥。
你可以理解為人體是一個(gè)系統(tǒng),而運(yùn)動(dòng)系統(tǒng)缺虐、神經(jīng)系統(tǒng)芜壁、內(nèi)分泌系統(tǒng)、循環(huán)系統(tǒng)高氮、呼吸系統(tǒng)慧妄、消化系統(tǒng)、泌尿系統(tǒng)剪芍、生殖系統(tǒng)可以理解為它的子系統(tǒng)塞淹。
2.再以我曾經(jīng)在校開發(fā)的博客為例,闡述子系統(tǒng)的含義
我的博客就是一個(gè)系統(tǒng)罪裹,在這個(gè)系統(tǒng)里面饱普,它有用戶系統(tǒng)、文章系統(tǒng)状共、留言系統(tǒng)套耕、聊天系統(tǒng)等。而用戶系統(tǒng)峡继、文章系統(tǒng)冯袍、留言系統(tǒng)、聊天系統(tǒng)則屬于子系統(tǒng)碾牌。
二康愤、架構(gòu)和框架
1.架構(gòu)是什么(以軟件為例)
軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)舶吗。 軟件架構(gòu)是一個(gè)系統(tǒng)的草圖征冷。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊誓琼。在實(shí)現(xiàn)階段检激,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體某個(gè)類或者對(duì)象腹侣。在面向?qū)ο?/a>領(lǐng)域中呵扛,組件之間的連接通常用接口(計(jì)算機(jī)科學(xué))來實(shí)現(xiàn)。 軟件體系結(jié)構(gòu)是構(gòu)建計(jì)算機(jī)軟件實(shí)踐的基礎(chǔ)筐带。與建筑師設(shè)定建筑項(xiàng)目的設(shè)計(jì)原則和目標(biāo),作為繪圖員畫圖的基礎(chǔ)一樣缤灵,一個(gè)軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實(shí)際系統(tǒng)設(shè)計(jì)方案的基礎(chǔ)伦籍。
也許用這么官方的語言來形容蓝晒,你可能不會(huì)明白。
如果我換一種方式表達(dá)帖鸦,你或許就懂了芝薇。
比如:
(1)從開發(fā)規(guī)范的看:
Java開發(fā)常說的三層架構(gòu)(界面層、業(yè)務(wù)邏輯層作儿、數(shù)據(jù)訪問層)或者是MVC模式開發(fā)洛二。
(2)從物理部署的角度看:
可以用一張圖來表示,如下所示:
(3)再以我寫的書的思維導(dǎo)圖為例,如圖:
這也是一個(gè)架構(gòu)攻锰,只不過是一本書的架構(gòu)晾嘶。
2.框架是什么
從建筑學(xué)的角度看,框架(framework)是一個(gè)框子——指其約束性,也是一個(gè)架子——指其支撐性娶吞。是一個(gè)基本概念上的結(jié)構(gòu)垒迂,用于去解決或者處理復(fù)雜的問題。
以Spring框架為例妒蛇,為什么需要Spring框架机断,因?yàn)樵跊]有Spring之前,我們對(duì)于對(duì)象的管理方式绣夺,是通過手動(dòng)New進(jìn)行管理吏奸,而不是現(xiàn)在xml中bean的方式或者是Spring注解的方式來管理。
前人因?yàn)槭謩?dòng)管理對(duì)象陶耍,吃盡了苦頭奋蔚,所以開創(chuàng)了這一個(gè)偉大的框架,解放了Java程序員之前手動(dòng)管理對(duì)象的痛苦物臂。
任何一門技術(shù)誕生旺拉,都有其一定的必然性。比如現(xiàn)在有不少朋友公司沒有用傳統(tǒng)的SSH框架(Spring+Struts/Struts2+Hibernate)棵磷,轉(zhuǎn)用SSM(Spring+SpringMVC+MyBatis)或者是覺得SSM(Spring+SpringMVC+MyBatis)有其局限性不符合業(yè)務(wù)的需要而轉(zhuǎn)用SpringBoot或SpringCloud蛾狗。
三、模塊和組件
1.什么是模塊
百度百科對(duì)這個(gè)的定義是:
(1)在程序設(shè)計(jì)中仪媒,為完成某一功能所需的一段程序或子程序沉桌;
(2)或指能由編譯程序、裝配程序等處理的獨(dú)立程序單位算吩;
(3)或指大型軟件系統(tǒng)的一部分留凭。
模塊,又稱構(gòu)件,是能夠單獨(dú)命名并獨(dú)立地完成一定功能的程序語句的集合(即程序代碼和數(shù)據(jù)結(jié)構(gòu)的集合體)。它具有兩個(gè)基本的特征:外部特征和內(nèi)部特征偎巢。外部特征是指模塊跟外部環(huán)境聯(lián)系的接口(即其他模塊或程序調(diào)用該模塊的方式蔼夜,包括有輸入輸出參數(shù)、引用的全局變量)和模塊的功能压昼;內(nèi)部特征是指模塊的內(nèi)部環(huán)境具有的特點(diǎn)(即該模塊的局部數(shù)據(jù)和程序代碼)求冷。
最終瘤运,你可以將其認(rèn)為是一個(gè)系統(tǒng)中的功能模塊,比如登錄功能模塊匠题、文章管理模塊拯坟、留言管理模塊或者是系統(tǒng)監(jiān)控模塊等。
2.什么是組件
比如我在前端開發(fā)中常用的Ztree或者是MyBatis的分頁插件等韭山,你可以理解為組件郁季。通常組件是為了實(shí)現(xiàn)某個(gè)目的而引用的,比如Ztree是為了更好的展現(xiàn)組織關(guān)系钱磅、權(quán)限管理等梦裂。
小結(jié):
以上是我對(duì)于系統(tǒng)和子系統(tǒng)、架構(gòu)和框架续搀、模塊和組件的理解(當(dāng)然了塞琼,里面有個(gè)人在實(shí)際開發(fā)中的看法,同時(shí)也包含引用官方的說辭等)禁舷。
最后彪杉,該專欄作者提出了一個(gè)思考題,題目如下:
問:你原來理解的架構(gòu)是如何定義的?
答:我認(rèn)為我原來的理解和該專欄作者大體上是一致的牵咙,不過也許有差異派近。我認(rèn)為架構(gòu)貫穿整個(gè)軟件開發(fā)生命周期(以瀑布模式為例,項(xiàng)目的可行性洁桌、需求分析渴丸、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)另凌、編碼(代碼規(guī)范制定和核心代碼的編寫)谱轨、測(cè)試、部署等)吠谢。不僅僅包含這個(gè)還包含采用什么樣的技術(shù)及其業(yè)務(wù)是全部在一個(gè)項(xiàng)目上(單體應(yīng)用)或者分開(多體應(yīng)用)等等土童。
加2643804531樂樂老師為好友,她會(huì)發(fā)以往資料給您工坊,及時(shí)發(fā)課題給您哦
611481448献汗,這是我們的群號(hào),如果您有什么問題可以在群內(nèi)咨詢
免費(fèi)訂閱成功 可以領(lǐng)取精品深度學(xué)習(xí)課程資料一份王污!
這些僅僅只是我個(gè)人的看法罢吃,歡迎有更好想法的朋友留言。