作为一个软件从业人员,我问你:
请说一下你是如何理解architecture, framework and lib的?
因为每个人都工作经验不一样,理解程度不一样,可能会给出不同层次的答案,当然我认为没有优劣,只是视角,谈论对象的问题。
首先:以每个概念为对象来进行思考。
1)在我们设计程序架构的时候,肯定自然而然的就会考虑进一些框架性的,模板性的,可复用性的东西;
2)以framework为主体时,开发一个framework时肯定也是用来某种的架构方式,并且这个framework最终还会以lib的形式来呈现,共他人使用。
3)每一个实现特定功能的lib必然包含了一种架构和引用了或是自己设计的框架(为了让思路更清晰,便于日后的维护)。
其次:如果要是以自我为中心(以自己写程序的角度),会有另一番景象。
我们自己写的软件要有一个总的架构,而其他的一切都是要为我这个架构服务的;
而framework只是帮助完善,我的部分架构;在这种情况下,很多事情都会交给框架去处理,它会去调用你写的代码函数,这个时候,框架是主角,而你的代码是供框架调用的配角。
lib帮助我实现了某些功能点;具体使用的时候是我的代码去调用这些lib。
最后:打个比方实现一个B/S架构的项目:
对这个项目你会有一个自己的架构,然后针对架构的不同部分你可能会用不同的框架来帮你完成
你可能会采用 ExtJS+Struts+Spring+Hibernate+DB 在这期间你可能还会引用很多第三方的lib来实现某些功能点,比如用log4j来写日志。