我眼中的三层架构

    也工作了一段时间了,觉得应该把这些年的心得感悟整理一下,可以将来回来翻翻,总结一下成长的轨迹。。本文算是第一篇,就叫《我眼中的xxx》系列。

   

       软件架构software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。

——引自《百度百科》

       上面这番话除了“大型软件”这个四个字不敢苟同以外,基本说明了软件架构的含义。个人认为一切软件都是存在架构的,只是层次不一样。大型软件的架构的抽象层级是组件级的,每一个组件完成一组特定的逻辑功能,如数据访问、日志管理等等;微型软件的架构可能是代码级,几条语句完成一组特定的逻辑功能。

       解释完了架构,开始解释“层”。层分两种,Layer和Tier。一般Layer指逻辑上的,Tier指物理上的。具体来说呢,比如一个J2EE系统,所有的类全部运行在J2EE容器里,并且使用浏览器访问。那么我们通常这么说,它的表示层是JSP/Servlet+Javascript等等,它的业务逻辑层使用了jBPM和Spring,它数据访问层使用了Hibernate,但是所有的这些全部是在J2EE容器里实现的(Javascript要在浏览器里运行),所以这里层就是Layer。还是上面那个系统,如果我们说它的表示层使用Web浏览器,它的应用层使用J2EE应用程序,它的数据持久层使用的Oracle,那么这个层,就是Tier。

       接下来谈三层架构的目的,书上说是为了解耦,以方便维护、扩展等等一系列的后期问题。其实这里面涉及许多细节,例如:数据间的关系要怎样表示,原来使用存储过程;后来有人说这样不好,这些逻辑应当分离,只是用外键就好;近来又出现了非关系型数据库。又如:显示的逻辑要怎样处理,诸如销售额低于xxx要标红等等,这些是在显示层处理还是在业务逻辑层处理。个人认为,三层架构的目的是为了清楚的描述软件的内容。说白了就是你写了一个软件,现在你要走人不干了,但是你得教会接受维护的人这个软件是个什么东西,于是你第一课要讲的就是我这个软件是分三层的!然后有人觉得这样讲挺明白的,于是就跟客户去讲,去跟学生去讲,于是就有了三层架构。可能最初做软件那个人,根本没想过要怎样分层。

       那么三层架构难道就只是一句空话么?个人觉得也不是,它描述了一个软件工作的通用原理,那就是把数据保存在计算机里,然后使用一些手段(逻辑运算)再把它显示给人看。可以说所有的软件都是在做这么意见事情。这也就告诉我们,不论我们的业务需求有多么多么的复杂,客户有多么多么的难缠,我们都是在做这么一件事情:把数据存起来,需要时再显示出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值