posts - 176, comments - 240, trackbacks - 0, articles - 7

          導(dǎo)航

          <2005年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(20)

          我參與的團(tuán)隊(duì)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          links

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

              架構(gòu)的可退化性(degragation)指的是架構(gòu)的結(jié)構(gòu)可以從元素比較豐富,層次比較多,比較復(fù)雜的情況退化到比較簡(jiǎn)單的情況, 而架構(gòu)的無(wú)侵入性(non-invasive)指的是架構(gòu)對(duì)于外部接入對(duì)象沒有特殊的形式要求, 一般通過依賴注入(dependency injection)向接入的外部對(duì)象推送信息. 這兩個(gè)概念之間存在著緊密的關(guān)聯(lián), 但并不等同. 無(wú)侵入性可以看作是架構(gòu)的一種局部可退化性, 例如一個(gè)業(yè)務(wù)對(duì)象在正常工作的時(shí)候需要是完整的EJB對(duì)象形態(tài), 而在編寫的時(shí)候退化到普通的java對(duì)象(POJO). 架構(gòu)的可退化性是一個(gè)比無(wú)侵入性更加廣泛的概念:一個(gè)架構(gòu)對(duì)外可以是無(wú)侵入性的, 但是它的實(shí)現(xiàn)本身可能相當(dāng)復(fù)雜, 是不能退化的. 例如在一般的web表現(xiàn)層設(shè)計(jì)中, 很多人都試圖提供一個(gè)RPC層, 將Web請(qǐng)求解析后映射為對(duì)java對(duì)象方法的調(diào)用. 通過一系列的描述文件, java對(duì)象本身可以完全不知道web層的存在, 因而這種設(shè)計(jì)在某種程度上可以看作是無(wú)侵入性的. 但是假如現(xiàn)在出現(xiàn)了性能問題,或者RPC層本身出現(xiàn)一些bug, 或者我們需要一些RPC層很難有效實(shí)現(xiàn)的映射規(guī)則, web層設(shè)計(jì)應(yīng)該允許我們?cè)竭^RPC層, 很方便的直接處理request和response, 這意味著在我們的架構(gòu)設(shè)計(jì)中需要把邊界劃在web接口上(需要在這里定義基本的交互規(guī)范),而不僅僅是對(duì)象接口上.如果一個(gè)架構(gòu)設(shè)計(jì)強(qiáng)制規(guī)定了一個(gè)不可越 過的RPC層, 則意味著該架構(gòu)在這一點(diǎn)上是不可退化的.

              架構(gòu)的可退化性是級(jí)列設(shè)計(jì)理論的一個(gè)自然推論, 它是對(duì)架構(gòu)整體的要求, 需要同時(shí)考慮到架構(gòu)本身實(shí)現(xiàn)的復(fù)雜性以及與外部接口的復(fù)雜性, 而不是僅僅考慮到對(duì)外部接入對(duì)象的復(fù)雜性的要求. 整個(gè)架構(gòu)需要能夠沿著復(fù)雜性級(jí)列scale down, 而不僅僅是scale up!

          Feedback

          # re: 架構(gòu)的可退化性與無(wú)侵入性  回復(fù)  更多評(píng)論   

          2005-12-23 01:21 by ajooo
          說(shuō)的太對(duì)了!

          # re: 架構(gòu)的可退化性與無(wú)侵入性  回復(fù)  更多評(píng)論   

          2005-12-23 16:40 by weide
          首先感謝canonical對(duì)我在上個(gè)Blog中提出的問題進(jìn)行了解說(shuō)

          這次兩段的文字雖然不長(zhǎng),又讓我考慮了老半天,感覺仍有推敲之處:
          架構(gòu)的無(wú)侵入性,指的是架構(gòu)對(duì)于外部接入對(duì)象沒有特殊的形式要求,這種無(wú)侵入性在事實(shí)上“降低”了外部對(duì)象與框架本身的依賴關(guān)系--是“降低”,而不是沒有了。所以從這個(gè)角度講,所謂“無(wú)侵入性”是根本就不存在的,只能降低“侵入性”,即術(shù)語(yǔ)應(yīng)該是:“低侵入性”。剛剛搜到一篇文檔也是說(shuō)這個(gè)問題:
          http://www.dingl.com/view.shtml?xh=474

          再來(lái)看可退化性和低侵入性的關(guān)系:
          低侵入性,指出了框架在進(jìn)行擴(kuò)展時(shí)的復(fù)雜度降低,對(duì)框架的依賴降低,通常就是我們希望的靈活的擴(kuò)展能力
          可退化性,則描述了,可以把增加的這些擴(kuò)展,很方便的unload
          這樣,低侵入性造就了可退化性。

          關(guān)于Blog中舉出的RPC層,這個(gè)很讓我困惑:因?yàn)樗瓷先ィ娴氖恰盁o(wú)侵入性”的。不過后來(lái)想想,這個(gè)RPC層實(shí)際上還是有所依賴的:它必須處理request和response?

          # re: 架構(gòu)的可退化性與無(wú)侵入性  回復(fù)  更多評(píng)論   

          2005-12-24 00:39 by wfeng007
          對(duì)于“可退化性“ 不太了解
          請(qǐng)問 根據(jù)你的定義
          “架構(gòu)的可退化性(degragation)指的是架構(gòu)的結(jié)構(gòu)可以從元素比較豐富,層次比較多,比較復(fù)雜的情況退化到比較簡(jiǎn)單的情況“

          是不是 退化就是指 不同職責(zé)部分 的合并但是這些職責(zé)依然存在?

          # re: 架構(gòu)的可退化性與無(wú)侵入性  回復(fù)  更多評(píng)論   

          2005-12-24 12:43 by 非魚
          @canonical
          我認(rèn)為你說(shuō)的無(wú)侵入和可退化,適用于平臺(tái)、框架甚至架構(gòu)的水平部分或者設(shè)計(jì)約束。對(duì)于一個(gè)軟件的架構(gòu)來(lái)說(shuō),往往由于其需求的變化,屬于你所說(shuō)的態(tài)空間不完備的問題(只要一個(gè)存在就夠了)。而且對(duì)于這種情況,我們已經(jīng)有了不利己的解決方案(或者說(shuō)理論?)——迭代。

          你說(shuō)的級(jí)列理論,是一個(gè)從一般到特殊思想的應(yīng)用,前提是一個(gè)完備的態(tài)空間,即“最一般”情況。這在軟件設(shè)計(jì)中很難適用,我們只能應(yīng)用其思想。考慮以下的例子:

          一個(gè)應(yīng)用是一個(gè)網(wǎng)絡(luò)應(yīng)用;它可以使用現(xiàn)有任何網(wǎng)絡(luò)協(xié)議通信。
          最簡(jiǎn)單的狀態(tài),單機(jī)可以使用它;
          兩臺(tái)機(jī)器可以使用它;
          可以使用IPX;TCP/IP等等協(xié)議通信;也可以使用IPV6(IPNG);
          現(xiàn)在軟件完成了,一個(gè)新的網(wǎng)絡(luò)協(xié)議出現(xiàn)了(比如IPNNG。。)。

          所以,級(jí)列理論,你應(yīng)該在考慮一下,確定其適應(yīng)環(huán)境,在前面加上定語(yǔ)。
          主站蜘蛛池模板: 柳江县| 贵定县| 东乡族自治县| 黔东| 手机| 冕宁县| 南部县| 明光市| 论坛| 闽侯县| 昭苏县| 泊头市| 五河县| 府谷县| 寿阳县| 文化| 民和| 阿拉善右旗| 双流县| 金堂县| 田东县| 江北区| 洛宁县| 定南县| 五河县| 游戏| 思茅市| 金坛市| 英吉沙县| 昌黎县| 西充县| 喀喇沁旗| 留坝县| 瑞金市| 富平县| 台安县| 江西省| 琼海市| 肃北| 东明县| 紫阳县|