Framework和Architecture的区别
其实,Architecture这个字是建筑之意,也就是由没有建筑物到完成的过程,以及如何将建筑生产出来的方法(即建筑学),它是一种Guideline,又称蓝图(blueprint),它指导了建筑物应该要怎麽盖,墙要几公分高,梁柱的位置,地基的面积,基础要打在哪,高度要多高,房间要多大等等都有。但它却没有叫你要用什麽方式(工法)盖。
软件也是一样,所谓的软件架构(Software Architecture)是一种软件的蓝图,它告诉你这个软件的结构,功能,介面,用法,与其他系统的构连以及数据交换等等规范,但它并没有叫你要用什么方式实作,因此软件架构通常会产生文件,图样,原型以及规格等,就是没有可用的程式码,因为那不是软体架构应该有的东西,就像盖房子时是给你蓝图,而不是一幢盖好的房子。
相对的,软件框架(Framework)的英文名称原意是骨架,拆开来看是 "Frame"-"work",表示是在一个既定的框架下可以做的工作,也就是说,这是一个已经成形的方法,而且有程序代码(例如钢构工法也是要有钢材才能做),并且会告诉你要如何使用它(即Framework Documentation,MSDN Library即为一最佳例子),但怎么使用它是程序设计师(也就是监工)的工作,与Framework无关。
Framework和Architecture经常被用来叫做架构,其实它们两个本质上的差异是很大的,Framework只会告诉你怎么用,但不会告诉你怎么作出特定功能,而Architecture是告诉你某些功能的走向以及方针,但却没有程序代码给你,所以Architecture通常会需要 Framework来实现,而Framework也需要Architecture才能发挥其所长。