Web 金字塔式开发框架分层模型概述

如今的大部分 Web 框架都是使用金字塔式的分层架构,通常这种应用都是阻塞同步 IO 模型的编程实现,理解这种分层架构模型的实质有助于理解框架。程序员

由于万变不离其宗,理解这种架构后你无论这种模型如何变化实际上都是在遵照一些约定和规则,那么理解这个模型,只要这个框架是这种架构那么你都会掌握的很快。编程

首先咱们从最简单的 MVC 三层架构提及。多线程

file
file

实际上,通常框架分层就是这种分层的,这种分层模型使用时经过一个入口文件启动框架服务,注册一些框架依赖,而后经过路由分发将请求分发到各个控制器里去,通常逻辑写在控制器层,模型层作数据处理,视图层负责展示。架构

随着项目变大,协做人数变多,这种分层会不太能适应需求,那么咱们能够经过增长分层来解决问题。框架

file
file

咱们在模型层和控制器层中增长服务层,经过依赖注入的方式将控制反转,能解决扩展和重用的问题,但随着项目继续扩大,咱们又要增长一层。异步

file
file

咱们再分一层,将数据修改获取逻辑放到储藏库层,模型只负责模型定义,这样多个程序员就能够工做在不一样的层上。编程语言

理论上咱们能够无限分层,不断的拆分将业务分层拆的更细。可是有的场景中咱们须要作一些操做其实不能很好的分层,由于有的业务可能用到,有的业务可能不会用到,同时因为分层咱们制造了许多组件和分层之间的依赖,在这样的系统中面向对象设计和编码变的重要。异步编程

此时引进了一个新的概念 AOP ,既面向切面编程微服务

file
file

上图的蓝色就是切面,面向切面编程,这种编程方法就是在须要的地方实现一个切面,把一些须要作但不是每一个业务都要作的东西放到这里去作,如中间件、过滤器、拦截器、事件通知、观察者都算是这种切面的实现之一。性能

总结

金字塔分层模型是阻塞 IO 编程的经常使用处理方式。

分层会带来业务低耦合及加强程序复用性,但同时也会带来业务逻辑代码变得复杂。

面向对象编程时为了解决大型项目的复杂性问题而产生的编程方法,有些人说这个不重要或者没有用颇有多是作的项目还不够大还不够复杂,或者是根本不涉及到协做开发的缘由,亦或者是真的是要使用底层语言作高性能的开发,而语言自己不支持。

金字塔式架构开发,业务平行展开难度较大,这种架构在人员分组上 5-7 人通常会达到极限,此时即便增长人手也不会增长开发速度和效率。解决这个问题的就是微服务或者是扁平化的基于消息传递的面向消息编程。

世界上不止阻塞 IO 编程,还有多线程、协程,也有非阻塞 IO 异步编程语言,它们使用的编程模型和金字塔分层模型是有区别的,但在理解和使用上难度更高些。

相关文章
相关标签/搜索