Posted on 2005-12-22 22:55
canonical 閱讀(1207)
評論(4) 編輯 收藏 所屬分類:
設計理論
架構的可退化性(degragation)指的是架構的結構可以從元素比較豐富,層次比較多,比較復雜的情況退化到比較簡單的情況,
而架構的無侵入性(non-invasive)指的是架構對于外部接入對象沒有特殊的形式要求, 一般通過依賴注入(dependency
injection)向接入的外部對象推送信息. 這兩個概念之間存在著緊密的關聯, 但并不等同. 無侵入性可以看作是架構的一種局部可退化性,
例如一個業務對象在正常工作的時候需要是完整的EJB對象形態, 而在編寫的時候退化到普通的java對象(POJO).
架構的可退化性是一個比無侵入性更加廣泛的概念:一個架構對外可以是無侵入性的, 但是它的實現本身可能相當復雜, 是不能退化的.
例如在一般的web表現層設計中, 很多人都試圖提供一個RPC層, 將Web請求解析后映射為對java對象方法的調用. 通過一系列的描述文件,
java對象本身可以完全不知道web層的存在, 因而這種設計在某種程度上可以看作是無侵入性的.
但是假如現在出現了性能問題,或者RPC層本身出現一些bug, 或者我們需要一些RPC層很難有效實現的映射規則,
web層設計應該允許我們越過RPC層, 很方便的直接處理request和response,
這意味著在我們的架構設計中需要把邊界劃在web接口上(需要在這里定義基本的交互規范),而不僅僅是對象接口上.如果一個架構設計強制規定了一個不可越
過的RPC層, 則意味著該架構在這一點上是不可退化的.
架構的可退化性是級列設計理論的一個自然推論,
它是對架構整體的要求, 需要同時考慮到架構本身實現的復雜性以及與外部接口的復雜性, 而不是僅僅考慮到對外部接入對象的復雜性的要求.
整個架構需要能夠沿著復雜性級列scale down, 而不僅僅是scale up!