首页  ·  知识 ·  架构设计
架构(Architecture)和框架(Framework)
明华  CSDN博客  综合  编辑:明华   图片来源:网络
一般情况下,使用Framework可以大大减少工作量,使开发变得容易。通常使用框架应该是值得鼓励的。但是也要注意:不要滥用Framework。不要在一个不是很大的项目中使用过多的Framework,不然维护会受

 1. 架构和框架的设计层次不同

    类似于硬件设计,软件设计也分为不同的层次。典型的软件设计层次如下图: 


blob.png

  在这个图中我们可以看到,Framework处于Micro-architectures和Application Level之间。Deisgn Patterns是Micro-architectures级的设计,Framework由多个Design Pattern和其他微架构设计元素形成。而Object&classes、Micro-architectures和Framework被称为 Micro Level设计。就是说,从Objects&classes到Framework,还没有发生质变。

    对于Application Level到Global/Industry Level的设计来说,就都是Architecture的范畴了。从Application Level来说,它是由零到多个Framework组成的独立的应用程序,会考虑诸如UI之类的重要问题。System Level由多个应用组成,每个应用在整个系统中代表不同的角色,这些应用共同组成一个系统工作环境。Enterprise Level又是由System Level组成,通常跨越整个企业(这里是广义的企业)中的多个组织机构。Global/industry Level由多个企业通过Internet和商业市场组成一个相当大范围内的系统应用,B2B就是这样的Global Level设计的应用系统。

    显然Framework和Architecture在这里的差别是巨大的,哪怕和Application Level相比。当一个应用中只使用了一个Framework时,我们可以把它叫做Architecture吗?事实上,Framework仅仅是 Architecture中的一个微不足道的部分。在Achitecture中,我们考虑技术视图时,会选择J2EE或.NET,然后才会考虑:是否要用 Spring、Hibernate?从这里可以看出,Framework只是技术视图的一个设计决策。

    2. 架构和框架的Design Forces不同

    其实,仅仅上面的描述也应该能够让大家清楚的认识到Architecture和Framework的区别了。但我还想在另外的方面更进一步说明。

    Design Forces我不知道怎么翻译,只能解释一下了:Design Forces指设计主要针对的问题、领域和能力。勉强可以翻译成“设计针对”吧。

    Framework的Design Forces主要是功能性、复杂性和性能。从Framework的定位和设计层次来说,它主要目的是帮助开发人员完成公共的、系统的功能,这些功能在大多 数应用中都需要,差别在于多少而已。对于一个Framework,完成系统的功能,隐藏并尽量简化这些系统功能的复杂性,同时提供可接受的性能,这就是它 的设计目标了。

    而对于Architecture,其最主要的Design Force就是变更。其次,所有可能的问题都是要在Architecture中考虑:复杂性、功能、性能、技术、所有非功能需要等等。。。

    3. OOP、AOP还是FOP(Framework oriented Programming)?!

    做Java有一个好处,就是各种框架技术层出不穷,使用方便。但这不见得就是好事情。感觉很多人非常专注于框架的使用和研究,对框架注意力 甚至超过了对OO、Java、J2EE规范等基本的东西的注意力。倒是有些象当初Windows下面,用VB、VC、Delphi,还是 CBuilder?似乎有些人把OOP、AOP变成了FOP。

    在我看来,框架这个东西,用用是可以的,研究就不必了;自己写个框架也是可以的,但也不应该停留在框架这个层次。不要在框架上浪费精力,把这个事情交给毕业生做好了。

    4. 慎用Framework!

小标题夸张一点,是为了提醒大家。一般情况下,使用Framework可以大大减少工作量,使开发变得容易。通常使用框架应该是值得鼓励的。但是也要注意:

不要滥用Framework。不要在一个不是很大的项目中使用过多的Framework,不然维护会受到影响。

尽量不要同时使用几个功能上有交叉的Framework。这会使项目开发的管理更加复杂,同样会导致维护问题。

在Enterprise Level的应用中使用Framework时,要对Framework进行严格的评估,确保其Design Forces不和Enterprise Level的应用冲突!Framework在设计时刻通常不会考虑到Enterprise Level的问题,你不能想当然的认为它一定可以适合你的Enterprise应用!

    关于架构和框架,可以用一首诗来做结:

    横看成岭侧成峰,远近高低各不同。

    不识庐山真面目,只缘身在此山中。 


本文作者:明华 来源:CSDN博客
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读