• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            數(shù)據(jù)流系統(tǒng)

            概念:以算法和數(shù)據(jù)結(jié)構(gòu)為中心, 像管道和過(guò)濾器般處理數(shù)據(jù),每個(gè)組件都有相對(duì)獨(dú)立的數(shù)據(jù)處理功能,數(shù)據(jù)依次經(jīng)過(guò)各個(gè)組件,最后形成完整的數(shù)據(jù)處理系統(tǒng)。
            優(yōu)點(diǎn):各個(gè)組件都是獨(dú)立的, 可以放方便的組合、重用和擴(kuò)展,流水線(xiàn)式的執(zhí)行,支持大規(guī)模并行處理。
            缺點(diǎn):流水線(xiàn)式的處理, 所以一般要求數(shù)據(jù)有比較統(tǒng)一的輸入和輸出格式;各個(gè)組件都是獨(dú)立的, 因此的很難提取共性;批處理方式,所以不適合和用戶(hù)交互。
            應(yīng)用:一個(gè)最著名的實(shí)例是unix的shell編程,多個(gè)對(duì)數(shù)據(jù)進(jìn)行處理的程序(組件)通過(guò)管道聯(lián)結(jié)起來(lái),產(chǎn)生總和的效果。
                     還有傳統(tǒng)的編譯器,源代碼經(jīng)過(guò)詞法分析、語(yǔ)法分析、中間代碼生成、目標(biāo)代碼生成等步驟生成輸出的目標(biāo)代碼。
                     還有其他經(jīng)過(guò)多步才能生成結(jié)果的程序,比如圖像處理,數(shù)值解題等。


            層次系統(tǒng)

            概念:將系統(tǒng)功能和組件分成不同的功能層次,一般而言,只有最上層的組件和功能可以被系統(tǒng)外的使用者訪問(wèn),只有相鄰的層次之間才能夠有函數(shù)調(diào)用。
            優(yōu)點(diǎn):把復(fù)雜的問(wèn)題逐層分解,使整體設(shè)計(jì)非常清晰;每層只依賴(lài)相連的里層,耦合性較弱。
            缺點(diǎn):有些劃分清晰的層次比較困難;層次太多會(huì)使性能下降。
            應(yīng)用:層次系統(tǒng)是我們最常見(jiàn)的方式, 一般軟件都有它的影子,比如程序典型的三層架構(gòu)分為表示層(界面層)、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層。
                     操作系統(tǒng)一般分為內(nèi)核層,API層, 應(yīng)用層, 我在理解 Windows API 調(diào)用過(guò)程中有相關(guān)介紹。
                    各層之間的交互方式也值得我們探討下, 一般調(diào)用方式有直接接口調(diào)用和消息發(fā)送二種方式,究竟什么時(shí)候該用哪種方式,可以參考我這篇消息耦合還是接口耦合. 總的來(lái)說(shuō)如果很強(qiáng)調(diào)弱耦合和可擴(kuò)展性,可以用消息方式,我們看到Windows上在調(diào)用API進(jìn)入內(nèi)核時(shí)用的是中斷消息的方式。


            面向?qū)ο蟮南到y(tǒng)

            概念:
            數(shù)據(jù)和數(shù)據(jù)上的操作被封裝成抽象數(shù)據(jù)類(lèi)型或者對(duì)象。系統(tǒng)由大量的對(duì)象組成,在物理上,對(duì)象之間通過(guò)函數(shù)或者過(guò)程調(diào)用相互作用;在邏輯上,對(duì)象之間通過(guò)集成、復(fù)合等方式實(shí)現(xiàn)設(shè)計(jì)的復(fù)用。
            優(yōu)點(diǎn):符合人們認(rèn)識(shí)事物的方式,支持封裝,繼承,多態(tài)。
            缺點(diǎn):通過(guò)函數(shù)調(diào)用,并且需要知道處理的對(duì)象,耦合性比較緊密,我這篇范型編程雜談中也有談及。
            應(yīng)用:面向?qū)ο笤O(shè)計(jì)和開(kāi)發(fā)基本上已經(jīng)是每個(gè)程序員的必修課,各種流行的編程語(yǔ)言都有對(duì)它的支持,COM組件技術(shù)也是以此為基礎(chǔ)。


            基于事件的系統(tǒng)

            概念:
            這是面向?qū)ο蠛蛿?shù)據(jù)抽象體系的一種變形,系統(tǒng)同樣是由大量的對(duì)象組成的,但是對(duì)象之間的交互不是通過(guò)明確指明對(duì)象的函數(shù)或者過(guò)程調(diào)用進(jìn)行的,相反,系統(tǒng)提供事件的創(chuàng)建和發(fā)布的機(jī)制,對(duì)象產(chǎn)生事件,一個(gè)或者多個(gè)對(duì)象通過(guò)向系統(tǒng)注冊(cè)關(guān)注這個(gè)事件并由此觸發(fā)出相應(yīng)的行為或者產(chǎn)生新的事件。
            優(yōu)點(diǎn):用于函數(shù)和過(guò)程的調(diào)用調(diào)用不需要指明特定的對(duì)象,所以系統(tǒng)具有非常好的靈活性和擴(kuò)展性,新的組件只需要向系統(tǒng)的事件處理部分注冊(cè)就可以立刻加入系統(tǒng)中,同樣,老的組件也可以方便的從系統(tǒng)中刪除。
            缺點(diǎn):由于函數(shù)調(diào)用是通過(guò)事件發(fā)送進(jìn)行的,所以,發(fā)出事件的對(duì)象不能確認(rèn)是否有對(duì)象處理了這個(gè)事件、是否是期望的對(duì)象處理了這個(gè)事件、是否獲得期望的結(jié)果,同樣也無(wú)法控制事件發(fā)生的次序,系統(tǒng)的邏輯和時(shí)序的正確性必須通過(guò)復(fù)雜的時(shí)序邏輯和前后條件的斷言加以保證。
            應(yīng)用:Windows的鼠標(biāo)鍵盤(pán)消息,窗口消息等都是基這種方式, 消息總線(xiàn)(Message Bus)也是基于這種架構(gòu)。該方式與面向?qū)ο蠓绞降谋容^我在消息耦合還是接口耦合這篇中也有提及。


            知識(shí)庫(kù)系統(tǒng)

            概念:
            使用一個(gè)中心數(shù)據(jù)結(jié)構(gòu)表示系統(tǒng)的當(dāng)前狀態(tài),一組相互獨(dú)立的組件在中心數(shù)據(jù)庫(kù)上進(jìn)行操作。如果組件負(fù)責(zé)對(duì)中心數(shù)據(jù)進(jìn)行選擇、處理,這種體系就是傳統(tǒng)的數(shù)據(jù)庫(kù)模型;如果中心數(shù)據(jù)結(jié)構(gòu)自主的引發(fā)一系列的行為,則這種體系可以看成一個(gè)黑板模型。
            優(yōu)點(diǎn):以數(shù)據(jù)為中心的體系結(jié)構(gòu),可以自然的表示大量的數(shù)據(jù)和事務(wù)處理的邏輯,適合表達(dá)以數(shù)據(jù)為中心的應(yīng)用程序。
            缺點(diǎn):只有很少一部分簡(jiǎn)單的數(shù)據(jù)庫(kù)存儲(chǔ)應(yīng)用可以完全采用這種體系結(jié)構(gòu)表示。
            應(yīng)用:傳統(tǒng)的數(shù)據(jù)庫(kù)。


            解釋器系統(tǒng)

            概念:如果應(yīng)用程序的邏輯非常復(fù)雜,一個(gè)較好的體系就是提供面向領(lǐng)域的一組指令(語(yǔ)言),系統(tǒng)解釋這種語(yǔ)言,產(chǎn)生相應(yīng)的行為,用戶(hù)使用這種指令(語(yǔ)言)完成復(fù)雜的操作。
            優(yōu)點(diǎn):非常好的擴(kuò)展性,用戶(hù)可以實(shí)現(xiàn)對(duì)軟件系統(tǒng)的二次開(kāi)發(fā)。
            缺點(diǎn):軟件開(kāi)發(fā)復(fù)雜,特別是這種指令集的設(shè)計(jì)非常困難。
            應(yīng)用:Java虛擬機(jī), .Net的CLR(Common Language Runtime), 腳本語(yǔ)言的解釋器等。


            在實(shí)際開(kāi)發(fā)中,我們很少會(huì)只使用一種體系結(jié)構(gòu),很多時(shí)候是以一種體系結(jié)構(gòu)為主, 其他體系結(jié)構(gòu)為輔。比如我們一個(gè)網(wǎng)絡(luò)客戶(hù)端軟件總體上是層次系統(tǒng),可能分為通訊層、業(yè)務(wù)邏輯層、界面層, 但每層內(nèi)部又會(huì)用面向?qū)ο蟮姆绞綄?shí)現(xiàn)。

            總之, 軟件系統(tǒng)的分析和設(shè)計(jì)的基本任務(wù)是:確立系統(tǒng)中的基本元素(完成系統(tǒng)的功能所必不可少的成分);確定這些元素之間相互作用的方式(這就是系統(tǒng)的體系結(jié)構(gòu))。

            參考資料:百度百科 體系結(jié)構(gòu)
            posted on 2013-01-27 21:15 Richard Wei 閱讀(3218) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): 架構(gòu)體系

            FeedBack:
            # re: 常見(jiàn)體系結(jié)構(gòu)介紹
            2013-02-22 12:00 | 永遇樂(lè)
            很全面,學(xué)習(xí)了  回復(fù)  更多評(píng)論
              
            久久中文娱乐网| 亚洲国产精品狼友中文久久久| 久久午夜无码鲁丝片| 久久强奷乱码老熟女| 久久婷婷五月综合色奶水99啪 | 久久久无码精品午夜| 久久午夜夜伦鲁鲁片免费无码影视| 青青国产成人久久91网| 久久综合色之久久综合| 久久精品九九亚洲精品| 亚洲中文字幕久久精品无码喷水| 国产精品一区二区久久精品无码| 久久发布国产伦子伦精品| 久久精品一区二区三区中文字幕 | 色播久久人人爽人人爽人人片aV| 国产精品久久久久无码av| 久久婷婷五月综合成人D啪 | 久久国产福利免费| 亚洲AV无码久久精品色欲| 久久精品国产99国产精品| 精品久久久久国产免费| 久久精品国产亚洲AV高清热| 香蕉久久永久视频| 国产精品热久久毛片| 青青青国产成人久久111网站| 亚洲级αV无码毛片久久精品| 一本色综合网久久| 亚洲欧美一级久久精品| 久久久国产精华液| 久久不射电影网| 女人香蕉久久**毛片精品| 99国产精品久久| 狠狠久久亚洲欧美专区| 国产精品美女久久久网AV| 久久线看观看精品香蕉国产| 国内精品久久久久影院一蜜桃| 久久精品aⅴ无码中文字字幕重口| 中文字幕日本人妻久久久免费| 国产欧美一区二区久久| 久久国产精品99精品国产| 国内精品久久久久久久涩爱|