设计就像是转魔方,你必须面面俱到。
anytao开始想尝试尝试写点设计的东西了,只所以有了这个“突如 其来”的想法,原因其实很简单:因为对设计、架构、分层、模式,我很陌生。因为陌生,所以接触,因为接触,所以随笔。系列之构思就这么诞生了。因此,这个 系列是个方法论,是个杂文集,也是个见证史。我不期望能收获多少掌声,但求能保持更多交流。作为技术的狂热追求者,我始终认为两件事情是技术的立命之本:
因为,你会发现在日新月异,纷繁复杂的技术领域里,一切都在变,一切都在赶,我们拼命的狂追,换来一片的豪赌。唯一不变的,一是底层,二是设计。所以我只关注这两个,也只关注这两个,这是我认为的学习方法论中的第一守则:确定不变的追求方向。
那么这个系列将关注些什么方向呢?
当年,petshop作为.NET和J2EE两个派别之争的产物,坐在了潮流的风口上,时间已然过去,当时硝烟早已消失。我们庆幸的是petshop一路走来,从1.0到4.0,综观其设计的脉搏,能够感受到架构的日渐成熟和演变,这是技术之争留给我们最大的看点。
(图片来源:MSDN)
从1.0的简单3层BS系统架构,到4.0实现较复杂的分层结构,同时引入数据缓存、异步处理机制,petshop成为典型的分层结构的代表为架构设计的学习提供了良好的资源与素材。从历史的遗迹中,我们挖掘到的是什么?
没有一成不变的设计,也没有一成不变的架构。方案是永远随着需求,随着技术而不断重构,设计之美就体现在不断的否定与自我否定中。本系列不是讨论petshop的专题,这方面的讨论已经很多了,我们没有必要再造轮子。因此,更关注如何,怎样和思想,是这里的讨论。
那么,设计、架构应该从哪儿入手,又如何进行?面向对象的原则又是什么?设计模式又如何融入到我们的架构体系中?这一系列的问题,我想说可能根本没 有答案,而确有方法。本系列就力图从方法的角度入手,以并非专业又并非经验的视角来阐释如何以菜鸟的立场来“空谈”设计。因为,你不能说设计只是架构师的 事儿,否则满篇的代码又如何体现艺术之美呢?作为菜鸟, 我们少了经验,但是多了思考,因此对架构、对设计、对模式的探索,应该从一定的方法做起,这是本 文和本系列试图达到的目标。
作者力图以例小心求证设计,以图来大胆阐释方法。例如,软件设计的分离点应该如何来考虑呢?
分层角度,框架基础,功能划分,一个系统设计要综合考虑这些因素。可能还不止这些,也可能只是其中的一点,具体的架构要看具体的需求。然而探求架构和设计方法的时候,我们要把握基本的方法和思路去迎合前人总结的经验,也叫科学。
以上述思路来回顾petshop 4.0的架构,我们很明显的感受到,良好的设计正是巧妙的耦合了架构设计中的诸多因素,提出了近乎完美的方案。分层角度来看,在petshop中自不必 说,明显的三层架构体现了良好的系统分离与耦合;通用角度来看,.NET Framework作为技术通用组件,提供了系统实现的基本技术基础,而对Profile和Membership的分离,则体现了领域通用部分的价值;模 块角度来看,由于petshop本身的业务需求比较简单,因此模块划分不够明显,但是对Order的处理可以看作简单的业务模块了。而其他方面,例如设计 模式,面向接口开发的技术,也同样体现在petshop的大框架中,让我们受益非浅。
从架构到设计,漫游在一个技术而艺术的世界,一直是我的梦想。对技术的驾驭,不是看你了解多少细节,更重要是你控制了多少格局。架构设计就是一个控 制格局的艺术,只有游刃有余的驾驭了如何将技术细节变成就轻驾熟的应用,才是设计的最高境界。届时,你会发现,原来技术可以更美的。所以,我要说,设计, 应该多一点。
参考文献
(中国)温昱,软件架构设计
(USA)Geoffrey James,The Tao of Programming
热门源码