php开发小组,软件中的分层

46c768b58ddd06724653b1ba71a4623b.png

在分解复杂的软件系统时,软件设计者用的最多的技术之一就是分层。

例如网络互联中,HTTP层架构在TCP之上,TCP架构在IP之上,IP又架构在以太网之上。

例如我们常用的很多软件,还有网站,都明显的这三层结构:表现层,业务逻辑层,数据存取层。

在这种组织方式下,上层使用了下层定义的服务,而下层对上层一无所知。另外,每一层对自己的上层隐藏其下层的细节。

好处:

在无需过多了解其他层次的基础上,可以将某一层作为一个有机整体来理解。例如,无需知道以太网的工作细节,你照样可以在TCP上构建HTTP服务。

可以替换某层的具体实现,是要替换前后提供的服务相同即可。例如,HTTP服务无论是在以太网、PPP上、还是其他任何网络上都无需改变,而且与提供传输电缆的网络运营商无关。

可以将层次间的依赖性减到最低。假设网络运营商改变了物理传输系统(电话线改为光纤),但只要IP层不变,HTTP服务就可以不变。

分层有利于标准化工作。TCP和IP就是关于他们各自层次如何工作的标准。

一旦构建好了某一层次,就可以用它为很多上层服务提供支持。如,TCP/IP同时被FTP、telnet、SSH和HTTP使用。否则,所有这些高层协议都必须编写它们各自的底层协议。

缺陷也有:

层次并不能封装所有东西。有时它会为我们带来级联修改。如,一个网站要增加一个在页面上显示的数据项,就必须要在数据库中增加相应的字段,还要修改业务逻辑层,最后修改表现层。

过多的层次会影响性能。在每一层,一般都会从一种表现形式转换到另一种。不过底层功能的封装通常带来比代价更大的效率提升。

分层架构中最困难的问题是决定建立哪些层次以及每一层的职责是什么。拿网站应用举例。

表现层的主要职责:向用户显示信息,并把从用户那里获取的信息解释成业务逻辑层上的各种动作。

业务逻辑层的主要职责:必须做所有和业务相关的工作,包括根据输入数据或已有数据进行计算,对从表现层输入的数据进行验证,以及根据从表现层接收的命令来确定该调度哪些数据存取层的逻辑。有时候,业务逻辑层对表现层完全隐藏了数据存取层。

数据存取层的主要职责:主要关注与其他系统的交互。大多数情况,其他系统是指数据库,那么数据存取层的主要职责就是存取持久数据。

简单介绍到这,主要参考《企业应用架构模式》。PHP网站中分层的实践,有机会细说。好知网里 @kent 老师的实践教程、经验分享。

有兴趣的可以关注我微信公众号:PHP工程师

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值