架构小白到砖家-02-单应用系统框架发展过程-为什么使用springboot?

web应用开发经历了很久的发展,已经越来越复杂了,为了更好的搭建应用框架,还是在梳理下历史发展过程。web应用开发语言就很多,这里只讨论java方案的历史。

为什么会有web应用呢?人们为了办理一些公司业务,以前只能到公司现场进行人工柜台办理,为了方便用户和提升工作效率,可以使用系统进行远程业务办理工作,就产生了web应用。
在这里插入图片描述
web应用的基本原理是浏览器和web应用之间的通信。相当于用户和公司(浏览器和web应用)使用写信的方式来进行交流,邮差(http协议)来将信件在两人之间传递。信件的查看和书写需要借助一些工具(html、css、js)。web应用使用java定义servlet(业务接口人)来接收和处理信件,那么一个web应用就是多个servlet组成。由于收件人很多,邮差为了能准确的将信件送给收件人,所以在信件上面添加了通信地址(URL)。每个servlet就是一个收件人并且拥有一个自己的信箱,如果一个复杂的web应用将拥有非常多的servlet,就会出现如何管理复杂的通讯地址问题。
在这里插入图片描述
在这里插入图片描述
怎么解决通讯地址管理问题呢?这个时候struts就诞生了,建立一个传达室的公共信箱(struts)接收所有信件,然后根据收件人登记的通信地址再发送给真正的收件人。由于每个servlet都有一个专属的信箱,需要花费大量的资源,有了传达室以后,那么就不需要每个收件人都有信箱,大家公用传达室的信箱就可以了。这样一个没有信箱的普通java程序(普通员工)也可以在传达室登记一个自己的通信地址,然后就能接收自己的信件了。虽然有了传达室统一收件,还是需要维护一个庞大的登记簿来管理通信地址,那么怎么维护通信地址登记簿又是问题了。
在这里插入图片描述
如何解决通信地址登记簿呢?这个时候springmvc就诞生了,由于通信地址都是有信息的,所以其实通信地址的格式按一定约定规则(xx省xx市xx区xx街道x-x-x门牌号),可以不用维护通信登记簿,直接按照通信地址的规则就可以把信件分配给对应的收件人。
解决了信件收取的问题,还有很多重要信件需要进行妥善保存,有了档案室(数据库)进行信息存储。由于档案室是公用的,每天很多人来存取信息,档案室为了保证数据信息不会丢失和错误,建立了数据存储流程,每个人要存储数据的时候都需要填一个登记表格,然后通过档案员来处理存储业务,偶尔还有存储失败的情况,还需要叫存件人处理失败问题。另外有时候一封信件包含多个业务信息,需要填写不同的登记表来将信息存储到不同的档案柜上。所以想还原一封信件完整信息也比较麻烦了。
在这里插入图片描述
如何解决存储信息的复杂和繁琐的过程呢?人们就成立一个专职办理存储的部门(EJB)来帮助业务人员去存储信息,但是EJB自己非常庞大,又定义了一大堆代办规则,而且办事效率还不高,让存储工作比自己亲自办理还要繁琐。于是一个更轻量级的部门(spring)出现了,它通过提前设置通用规则,代办过程自动使用规则的方法(AOP切面编程),让存储流程变得简单。但是还是没有解决信件内容根据不同业务分别存储归档的问题,人们还是需要自己进行拆分信息和组合信息。于是又成立了一个专门数据拆分和组装的ORM部门(hibernate、mybatis)。它可以按照提前设定好的拆分规则,对信息进行自动的拆分和组装。由于ORM部门有两种方案,而且标准还不统一,增加了学习和选择问题。于是spring制定了一个统一的存储标准(JPA),而且还提供了一些现有规则,方便直接使用进行简单的存储业务处理。
在这里插入图片描述
在这里插入图片描述
解决了web应用对外通信问题和数据存储问题,还有一个资源利用的问题。比如web应用的一个业务就招一个人来单独办理,如果业务太多,那么就需要很多人来处理。但是很多业务平时没有这么多人来办理,或多个业务都需要某一个公共业务支持,这样就会造成很多人员的浪费。怎么解决这种人员管理问题呢?spring这个部门有一个制度,就是每个员工都进行分类,平时都在统一等待区,有了业务事件后,才指派一个员工去处理,处理完成后又回到等待区。就是建立了一个人力资源池,根据具体业务需要,来调派和管理资源数量,从而避免资源浪费。然后把spring的这种资源池的制度推广到其他部门,建立一个web应用的资源池,就可以解决应用的资源利用问题。这样就形成了springmvc+spring+springJPA的应用框架。这样的框架,几个技术之间还是需要建立相应的合作规则,才能顺畅的完成整个应用的运转。这种合作规则,需要人们自己去配置,但是这些配置其实只有一种最佳实践,很多的特殊性规则并不多,能不能简化或者去掉这种配置合作规则的办法呢?
在这里插入图片描述
为了能够方便人们简单实用这种应用框架,spring完成了java的web应用框架大一统,推出了springboot框架,将springmvc+spring+springJPA默认制定了最佳实践的合作规则,并且还提供了各种其他技术工具的整合方案,让人们可以根据自己的需要进行添加。这样使得今天web应用的基础方案只需要使用springboot就可以解决大部分问题了。
在这里插入图片描述
回顾总结一下web应用发展的过程,web应用主要需要解决两大问题,第一个问题,解决处理用户业务请求接收问题,从最原始的多个servlet,进化struts的单一servlet,但是需要维护URL映射表,再进化springmvc的URL自动映射机制;第二个问题,解决数据存储问题,从JDBC直接手动操作数据库,进化到EJB重量级实务框架,在进化到spring的AOP轻量级实务框架方案,再到ORM框架进行数据对象和数据表的自动映射,最后到springJPA统一ORM标准和自动简单数据库操作。在这个过程中,还发展出了spring的对象管理机制,进而实现了springboot的最佳框架实践。另外web应用运维部署是需要servlet容器的,springboot根据最新的微服务概念,也整合了tomcat等servlet容器,可以不用额外的容器部署了。

所以现在单应用系统框架,只需要使用springboot就能快速的进行开发工作了。

猜你喜欢

转载自blog.csdn.net/jea_dong/article/details/86010591