網(wǎng)站建設(shè)使用MVC框架 軟件架構(gòu)概述,網(wǎng)站建設(shè)對于“架構(gòu)”在軟件行業(yè)中屬于高頻詞。從事網(wǎng)站建設(shè)等軟件開發(fā)的設(shè)計人員都或多或少都接觸過架構(gòu)。網(wǎng)站建設(shè)公司和許多人的理解不一樣,架構(gòu)的目的并不是為了實現(xiàn)功能,也就是說架構(gòu)并不能幫助設(shè)計人員開發(fā)一款功能強大的軟件產(chǎn)品,而是為了保證軟件的質(zhì)量。設(shè)計架構(gòu)需要系統(tǒng)的知識體系,同時這個知識體系又是設(shè)計人員晉升通道中所必須掌握的。知識體系不只體現(xiàn)在對架構(gòu)概念的理解上,也包括能夠根據(jù)軟件產(chǎn)品的需求,設(shè)計一個適用的架構(gòu)所需要的方法和經(jīng)驗。而這些方法和經(jīng)驗的總結(jié)和提煉就是架構(gòu)的模式和風(fēng)格。
網(wǎng)站建設(shè)對于軟件架構(gòu)的定義
在網(wǎng)站建設(shè)等軟件行業(yè)中,架構(gòu)(Architecture)不但是個高頻詞,也是一個令人生畏和迷惑的詞。許多設(shè)計人員喜歡用架構(gòu)表達(dá)一些含糊不清的概念。對架構(gòu)的概念不能夠清晰地理解,也反映在架構(gòu)師的工作職責(zé)方面。軟件公司或者軟件開發(fā)部門一般都設(shè)有架構(gòu)師的職位,但很多公司或部門對架構(gòu)師的職責(zé)并沒有進(jìn)行清晰的定位,有的架構(gòu)師甚至從事產(chǎn)品經(jīng)理的工作,而產(chǎn)品的架構(gòu)反而是由設(shè)計師自由選擇。這些現(xiàn)象其實都反映了一個問題:什么是架構(gòu)。
架構(gòu)并不是軟件領(lǐng)域的專有名詞,它在軟件產(chǎn)生前就已經(jīng)被應(yīng)用到了各個領(lǐng)域中。架構(gòu)在很多領(lǐng)域中都是指提供如何滿足用戶需求的通用方法。比如在建筑領(lǐng)域,建筑的架構(gòu)表達(dá)建筑物為了滿足特定的需求而需要提供的元素和這些元素之間的關(guān)系,以及設(shè)計原則和約束。同樣,一本小說也有架構(gòu),小說的架構(gòu)描述主要人物的特點和他們之間的事件脈絡(luò),而這些設(shè)計是為了約束作者如何寫一本滿足讀者閱讀需求的小說。
軟件架構(gòu)的作用和其他領(lǐng)域中架構(gòu)的作用相似。對于架構(gòu),很多人嘗試著給出符合軟件行業(yè)的架構(gòu)定義。這些定義基于他們自身對架構(gòu)的不同理解,從各個方面對架構(gòu)進(jìn)行了描述。由于基于不同的角度和理解,這些定義中有些甚至相互矛盾,但在三個觀點上達(dá)成了共識。
·第一個共識
是“架構(gòu)是高層次的分解”。隨著軟件系統(tǒng)的發(fā)展,軟件提供的功能越來越強大,軟件的規(guī)模和復(fù)雜程度也大幅增加。為了方便項目的開發(fā)和管理,需要從某個或多個結(jié)構(gòu)上對軟件產(chǎn)品進(jìn)行分解。從這個方面來定義,架構(gòu)就是對這些組成系統(tǒng)的抽象元素及這些元素之間的關(guān)系和約束的分解。
設(shè)計架構(gòu)時,架構(gòu)設(shè)計師可以從多個結(jié)構(gòu)對系統(tǒng)進(jìn)行分解和劃分,可以從邏輯方面劃分,也可以從物理和進(jìn)程方面劃分,這些不同的結(jié)構(gòu)就是架構(gòu)的各個組成方面。這些結(jié)構(gòu)網(wǎng)站建設(shè)公司再本站后面相關(guān)章節(jié)會介紹。這里我們只需要知道每種結(jié)構(gòu)都由各種類型的組件和連接這些組件的關(guān)系構(gòu)成。一種結(jié)構(gòu)代表從某一方面對系統(tǒng)的抽象和分解。組件代表在一種結(jié)構(gòu)類型下系統(tǒng)的主要組成內(nèi)容。它們相互調(diào)用、通信及交互,共同呈現(xiàn)系統(tǒng)的功能。組件可以是計算硬件、工作站、通信協(xié)議、程序運行的內(nèi)存、進(jìn)程或者一段抽象定義的功能。簡單地說,組件就是從不同的角度分解系統(tǒng)時的構(gòu)成元素。
·第二個共識是
“架構(gòu)是不易改變的決定”。系統(tǒng)設(shè)計人員希望有些組件和關(guān)系在開發(fā)之前就能定義好。這些組件和關(guān)系一般都不涉及系統(tǒng)的功能,主要是指系統(tǒng)分解成各種類型的抽象組件后同時定義的各個抽象組件的組成關(guān)系和交互方法。因為這些組件和關(guān)系一旦發(fā)生改變,會嚴(yán)重影響系統(tǒng)的設(shè)計。在進(jìn)行系統(tǒng)的分解時,分解組件一般包含功能的抽象定義,這是系統(tǒng)設(shè)計人員非常關(guān)心的問題,也是他們在程序開發(fā)過程中的主要實現(xiàn)目標(biāo)。軟件的架構(gòu)除了包含這些功能的抽象定義之外,還包含這些組件的關(guān)系,這些關(guān)系包括硬件的拓?fù)潢P(guān)系、軟件模塊的通信方式和通信協(xié)議等。系統(tǒng)設(shè)計人員雖然較少涉及這方面的設(shè)計工作,但是在實現(xiàn)設(shè)計方案時卻需要依賴這些組件和關(guān)系,它們的穩(wěn)定性直接影響著系統(tǒng)設(shè)計的穩(wěn)定性。如圖3.1所示,示例定義了兩個組件的調(diào)用方式。
在圖3.1中,架構(gòu)規(guī)定了組件1通過TCP/IP和組件2通信,并且通過簡單對象傳送協(xié)議(SOAP)獲取組件2的對象。架構(gòu)規(guī)定了通信使用的協(xié)議和獲取對象的協(xié)議,如果在組件開發(fā)過程中變動通信協(xié)議和對象獲取方式,則會對組件的開發(fā)造成混亂。
·“架構(gòu)是一種約束和規(guī)則”是第三個共識。
系統(tǒng)中不易改變的地方同樣體現(xiàn)在約束上,架構(gòu)定義了一系列的約束條件。這些約束條件組成了架構(gòu)的統(tǒng)一性,架構(gòu)中的各個組件按照約束相互作用。這些約束的組合,呈現(xiàn)出了一種獨特的風(fēng)格。同樣,架構(gòu)也定義一組規(guī)則,用于維持系統(tǒng)的完整性。這些規(guī)則有利于降低系統(tǒng)的復(fù)雜性,并能根據(jù)組件之間的調(diào)用和響應(yīng)來定義一套完整的約定,用于指導(dǎo)后期的系統(tǒng)設(shè)計工作。網(wǎng)站建設(shè)通過上述三點,可以得到架構(gòu)的一個簡單定義:架構(gòu)就是一系列組件和它們關(guān)系的抽象,以及維持這些關(guān)系的約束和規(guī)則。架構(gòu)由多個結(jié)構(gòu)來描述這些組件和關(guān)系,這些不同的結(jié)構(gòu)共同組成了架構(gòu)。在軟件的生命周期內(nèi),架構(gòu)并不是一成不變的。架構(gòu)雖然是名詞,但是在系統(tǒng)設(shè)計中,架構(gòu)是一個不斷演進(jìn)的過程。軟件架構(gòu)是不變的深層結(jié)構(gòu),而在設(shè)計之初很難全部定義這些不變的深層結(jié)構(gòu)。隨著系統(tǒng)開發(fā)的深入,有些不變的因素可能發(fā)生了改變,那么這些因素就會被移出架構(gòu)。當(dāng)所有可變化因素都被移出架構(gòu)之后,架構(gòu)就是一個維持最小結(jié)構(gòu)的集合,就像《計算機體系架構(gòu)》中所說:“我們將計算機系統(tǒng)的架構(gòu)定義為一組最小的特征集,它們決定了哪些程序?qū)\行,以及這些程序?qū)玫绞裁唇Y(jié)果”。好了,
網(wǎng)站建設(shè)公司本文“網(wǎng)站建設(shè)關(guān)于MVC框架的定義詳解”的搭建知識就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。