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

架构的可退化性与无侵入性

Posted on 2005-12-22 22:55 canonical 阅读(1041) 评论(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!

Feedback

# re: 架构的可退化性与无侵入性  回复  更多评论   

2005-12-23 01:21 by ajooo
说的太对了!

# re: 架构的可退化性与无侵入性  回复  更多评论   

2005-12-23 16:40 by weide
首先感谢canonical对我在上个Blog中提出的问题进行了解说

这次两段的文字虽然不长,又让我考虑了老半天,感觉仍有推敲之处:
架构的无侵入性,指的是架构对于外部接入对象没有特殊的形式要求,这种无侵入性在事实上“降低”了外部对象与框架本身的依赖关系--是“降低”,而不是没有了。所以从这个角度讲,所谓“无侵入性”是根本就不存在的,只能降低“侵入性”,即术语应该是:“低侵入性”。刚刚搜到一篇文档也是说这个问题:
http://www.dingl.com/view.shtml?xh=474

再来看可退化性和低侵入性的关系:
低侵入性,指出了框架在进行扩展时的复杂度降低,对框架的依赖降低,通常就是我们希望的灵活的扩展能力
可退化性,则描述了,可以把增加的这些扩展,很方便的unload
这样,低侵入性造就了可退化性。

关于Blog中举出的RPC层,这个很让我困惑:因为它看上去,真的是“无侵入性”的。不过后来想想,这个RPC层实际上还是有所依赖的:它必须处理request和response?

# re: 架构的可退化性与无侵入性  回复  更多评论   

2005-12-24 00:39 by wfeng007
对于“可退化性“ 不太了解
请问 根据你的定义
“架构的可退化性(degragation)指的是架构的结构可以从元素比较丰富,层次比较多,比较复杂的情况退化到比较简单的情况“

是不是 退化就是指 不同职责部分 的合并但是这些职责依然存在?

# re: 架构的可退化性与无侵入性  回复  更多评论   

2005-12-24 12:43 by 非鱼
@canonical
我认为你说的无侵入和可退化,适用于平台、框架甚至架构的水平部分或者设计约束。对于一个软件的架构来说,往往由于其需求的变化,属于你所说的态空间不完备的问题(只要一个存在就够了)。而且对于这种情况,我们已经有了不利己的解决方案(或者说理论?)——迭代。

你说的级列理论,是一个从一般到特殊思想的应用,前提是一个完备的态空间,即“最一般”情况。这在软件设计中很难适用,我们只能应用其思想。考虑以下的例子:

一个应用是一个网络应用;它可以使用现有任何网络协议通信。
最简单的状态,单机可以使用它;
两台机器可以使用它;
可以使用IPX;TCP/IP等等协议通信;也可以使用IPV6(IPNG);
现在软件完成了,一个新的网络协议出现了(比如IPNNG。。)。

所以,级列理论,你应该在考虑一下,确定其适应环境,在前面加上定语。

只有注册用户登录后才能发表评论。


网站导航: