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


            層次系統(tǒng)

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


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

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


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

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


            知識庫系統(tǒng)

            概念:
            使用一個(gè)中心數(shù)據(jù)結(jié)構(gòu)表示系統(tǒng)的當(dāng)前狀態(tài),一組相互獨(dú)立的組件在中心數(shù)據(jù)庫上進(jìn)行操作。如果組件負(fù)責(zé)對中心數(shù)據(jù)進(jìn)行選擇、處理,這種體系就是傳統(tǒng)的數(shù)據(jù)庫模型;如果中心數(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):只有很少一部分簡單的數(shù)據(jù)庫存儲應(yīng)用可以完全采用這種體系結(jié)構(gòu)表示。
            應(yīng)用:傳統(tǒng)的數(shù)據(jù)庫。


            解釋器系統(tǒng)

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


            在實(shí)際開發(fā)中,我們很少會只使用一種體系結(jié)構(gòu),很多時(shí)候是以一種體系結(jié)構(gòu)為主, 其他體系結(jié)構(gòu)為輔。比如我們一個(gè)網(wǎng)絡(luò)客戶端軟件總體上是層次系統(tǒng),可能分為通訊層、業(yè)務(wù)邏輯層、界面層, 但每層內(nèi)部又會用面向?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 閱讀(3230) 評論(1)  編輯 收藏 引用 所屬分類: 架構(gòu)體系

            FeedBack:
            # re: 常見體系結(jié)構(gòu)介紹
            2013-02-22 12:00 | 永遇樂
            很全面,學(xué)習(xí)了  回復(fù)  更多評論
              
            亚洲中文久久精品无码| 狠狠色伊人久久精品综合网| 区久久AAA片69亚洲| 欧美激情精品久久久久久久九九九| 久久久噜噜噜久久| 7777精品久久久大香线蕉| 久久久久99精品成人片欧美| 国产精品国色综合久久| 韩国三级大全久久网站| 久久福利资源国产精品999| 欧美丰满熟妇BBB久久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 91精品国产高清久久久久久91| 久久精品国产一区二区电影| 色综合久久久久综合体桃花网 | 亚洲午夜久久久影院| 91超碰碰碰碰久久久久久综合 | 久久精品国产69国产精品亚洲| 久久久久久无码国产精品中文字幕| 亚洲国产精品无码成人片久久| 国产精品日韩欧美久久综合| 久久久久久人妻无码| 亚洲精品第一综合99久久| 伊人久久综在合线亚洲2019| 国内高清久久久久久| 人人狠狠综合久久亚洲高清| 狠狠狠色丁香婷婷综合久久五月 | 久久91这里精品国产2020| 丰满少妇高潮惨叫久久久| 久久人人爽人人爽人人片AV不 | 成人免费网站久久久| 一本一本久久A久久综合精品 | 亚洲午夜无码久久久久小说| 久久电影网2021| 久久99国产精一区二区三区| 少妇人妻88久久中文字幕| 久久人人爽人人爽人人av东京热| 久久夜色撩人精品国产| 亚洲欧美久久久久9999| 久久免费看黄a级毛片| 日韩人妻无码一区二区三区久久99 |