“融化奶酪效应”的处理
2007-02-23 12:21:04 来源:WEB开发网今天,物理硬件和所有的组件是否安装在同一个服务器上对大多数的解决方案都会有很大的影响。各种不同的防火墙、负荷平衡技术、开关、路由器、SAN、NAS和集群等形成了一个非常动态和复杂的运行环境,今后对解决方案需求的各种变化都会影响到它。
有一些变动比起其它的变动可能出现的频率会更高一些,而且它们可能并不同时发生,或者其出现并非在计划范畴内。以上种种导致我们不得不为这些独立的运动机件做好应变准备,并保证对其的改变不会影响到系统内的其他部件。
松耦合,一种投资
我们尽量使程序中的黑盒子使用起来就像汽车的各个零部件一样,对某一部分的改动不会引起联动反应而影响到系统内的其他部分。绝对的松耦合是存在的。没有耦合仅仅因为这在各部分之间没有相互依赖的关系,没有互动(什么都没有)。建立一个并非孤立运行的系统,需要把它与什么耦合在一起。松耦合并没有比紧耦合容易到哪里去。结构需要设计,设计就是在各种代价之间寻求折衷的最佳方案,权衡改动代价、建构难易程度、维护难易程度、需要的性能表现以及其他很多方面的问题以寻得最佳的解决方案。这就不再是做出一碗意大利拉面的问题了,而是寻找一个好的食谱,利用它可以做出汤汁鲜美,硬度适宜并且可以随着进餐者的变化而随时调整的任意多碗意大利拉面。
当设计系统的时候,我们必须认真思考耦合的松紧度问题以及需要进行多少耦合连接才能使系统运作起来。比如说,从一个好的设计方案中始终可以清楚的区分出一个组件或者服务的内部和外部。解决变动的问题有很大一部分就是在解决如何进行内外部信息的传递问题,以及实现预期的行为和交互问题。我们需要一组定义清晰的接口和行为。我们把对这些行为和接口的描述称为合同。我们将在下篇文章中深入探讨这个问题。现在有一些对行为改动可以不影响到接口,比如说剔除编译错误等。我们经常会对行为做出改变,但是仅限于发布的行为范畴内。有些时候,客户是绝对有理由不再继续使用旧的版本的。
更多精彩
赞助商链接