随着分层设计的进行,对分层逐渐有了更深的了解.准备利用几篇文章,深度的分析一下分层设计.
我这里的题目之所以叫三层架构,不一定代表着系统就是三层.古语中三为多.这里的三层也可能是
四层,五层 或者更多层.
为什么要分层:
这是一个很基础的问题.很多的人都在讨论为什么分层.分层到底有哪些好处.在什么样的情况下分层
其实网上已近有很多这样的解释,首先我总结一下他们的观点
1.方便团队分工
以前的按功能模块一般是几个人将项目的功能模块一分,每个人从操作数据库、完成业务逻辑到实现界面都要独自完成,当然数据库的设计可以由一个人完成,这样的开发显然有弊病,首先每个开发人都需要掌握大部分技术,还要有很强的业务逻辑的理解能力,其次每个人的开发习惯都不同,形成的代码繁杂可读性差,最后后期的完善、维护都会造成麻烦。相信很多人都会理解这样的痛苦经历,多层开发就能解决上面的问题么?如果是一个合理的多层开发模式是完全可以解决的。
将软件开发分层,其实可以简单的理解为工种分层、规范代码,基本可以将工作分为界面设计人员、业务实现人员、数据库设计人员。界面设计人员的工作就是画程序界面然后将信息提交给业务层,不需要考虑业务层的逻辑关系,业务实现人员的工作是处理界面提交的数据请求完成逻辑流程,再结合数据访问层,不用考虑界面设计的样式、风格,也不用考虑数据库的格式,数据访问层一般是设计完善的架构系统,基本不需要人员工作,主要是屏蔽掉数据库间的差异,为业务层提供便捷的操作功能,数据库设计人员就是设计、规划数据库。很显然一个团队采用多层开发就可以合理的分配人员工作,将每个人放置到适合的岗位上,而主要的技术人员集中在关键部位的开发工作,重复简单的劳动,如画界面就可以安排给新手来完成。
2.其他特点
还有以下的一些特点:
规范代码:在开发过程中可以将每层的代码进行规范,固定开发语言的风格;
忽略数据库差异:好的数据访问层可以将数据库的差异完全屏蔽,对开发人员只是做相同的数据操作工作,甚至可以快速进行数据库转换;
上述两个观点基本上是代表了网上的主流观点.他们也基本把分层的优点说的差不多了
但是这个真的是分层的原因吗?我认为他们只是说了分层的表面而已.为什么要分层这个问题他们依然没有说明白.
就像是我问你人类为什么要吃饭,你回答我吃饭能使人身体好,有能量.咋一听起来似乎没有问题.但是总觉得有点别扭.其实根本上说是:人类需要吃饭.换句话说就是如果人不吃饭能身体好,有能量,我相信人类肯定是不会去吃饭的.
这个就像是软件设计的分层一样.很简单:大型企业开发需要分层.而分层绝对也是为了解决企业开发而来的.你绝对不能在单片机,智能电器开发中用分层.这个就有点张冠李戴了.
言归正传,我来说说为什么 要分层.了解一件事物,比如了解他的历史.我在查阅了很多资料以后,对分层的历史有了一点眉目了(网上这个资料真的很少,甚至没有,可能不太准确,希望大家指正).
1996年SUN公司退出了java,其"一次开发,多次应用",与平台无关的开发让众多的企业纷纷推出基于java标准版的API,java的良好性能让java的企业开发呈现爆炸式增长.
而后为了解决各企业API的兼容性.sun联合IBM,Oracle,BEA推出了强大的j2EE,也就是java的企业版.这样基于java的企业开发才进入了飞跃发展时代.也就是这个时代让企业分层开发逐步走向成熟.
补充:j2EE只是一个标准,不是eclipse,也不是myeclipse
微软在2000年推出了它的.net开发平台,真正的走向企业跨平台开发.
那么为什么企业那么喜欢java呢?除了它跨平台,安全以外.重要的一个原因就是java专门为企业开发提供了多层分布式企业应用模型.
下面我们来说一下对于企业应用模型的理解:
在企业中,公司有明确的分工和部门,这些部门很可能不在同一个地区.每一个部门用到的系统一般是不同的.但是我们又希望每一个部门的信息统一起来管理,便于管理层管理.同时,企业的数据对安全性要求一般是很高的.不希望系统每一个部分都部署在每一个员工的PC上.这样显然不是安全的.
所以,我们解决的办法就是把系统拆分开来,
在J2EE中,应用逻辑按功能不同可以划分为不同类型的组件,各组件根据它们所在的层分布在不同的机器上,共同组成一个基于组件的分布式系统。
这样,系统的安全性,可靠性大大的提高,充分发挥了分层的作用.
也就是说,分层可以把各层部署在不同的地方.在一层中,显然是不可能出现分布式系统的.
上面几点就是对于分层的原因的解析.其中还是建议大家,想了解一种技术.最好的方法就是去看看这种技术的历史.不要人云亦云,回顾过去,才能更好的了解现在,展望未来.