你必须了解的「架构」小历史

作项目时咱们一直在说框架、架构,那它究竟是什么呢?html

什么是架构

从 dubbo 官网咱们能够看到架构设计的发展演变史。前端

这里把架构分红四类:java

  • 单一应用架构
  • 垂直应用架构
  • 分布式服务架构
  • 流动计算架构

刚开始时 PHP + MySQL 就能够造成网站了。程序员

这种模式支持中小型网站是没有问题的,可是一旦造成大型网站就支撑不住了。数据库

因此如今各大主流公司仍是会选择 Java。后端

咱们项目中的类会打包成一个 JAR 包运行在服务器里,最初全部模块是在一个 JAR 包的,也就是单一应用,随着用户量的提高、访问量的增大,JAR 包愈来愈大,单一应用运行起来愈来愈慢,因此单一架构就再也不适合了。设计模式

此时引入分布式架构,把一个模块拆分红几个单独的模块以提高效率,一个 JAR 包分红几个 JAR 包运行在不一样的服务器上,引入了 MVC 的设计模式。浏览器

随着业务量的剧增,几台服务器也已经不够用了,效率比较低,此时每一个模块用 N 台服务器进行部署。安全

当请求进来以后,会按照一些策略,把它随机分配到负载均衡的服务器。此时每一个服务器的 request 就比较少了,提升了效率。这个就是分布式服务架构。前端框架

每台服务器之间须要通讯的,用的就是 RPC 框架。

当分布式架构也不够用了,最后演变成流式架构,此时 SOA 是关键。

Java 开发的主流框架演变之路

如今 Spring 基本占据主导地位了,那么在 Spring 普遍应用以前,有哪些主流框架呢:

JSP + Servlet + JavaBean

JSP 负责前端页面的控制,Servelt 负责服务器端的应用程序,JavaBean 是咱们的对象,这样咱们有了对象、有前端页面、有后台接受请求处理的服务器,就可以搭建一个从前端到后端的总体框架了。

但这个搭配有点麻烦,由于 JSP 既能够写标签,也能够内嵌 Java 代码,<% (Java code) %>,全部东西耦合在一块儿变得很是麻烦;

而如今纯的 HTML,支持 JS, 支持 HTML 标签,支持 CSS 样式,不支持插入 Java 代码,这就是 JSP 和 HTML 的最大的区别

如今企业中开发时好比 Spring Boot 的开发,更多的仍是用 HTML,或者用一些前端框架好比 freemarker 进行代替,JSP 已经被慢慢淘汰掉了。

但问题时,当前端页面和后段服务器交互时,发送 N 多个 request,写 Servlet 时要写 N 多个对应的处理:

  • 在用2.5及以前的版本时,也就意味着写 N 多个 xml 文件;
  • 后面引入注解以后,依然要写 N 多个注解,很是麻烦。

而用 MVC 以后,很是简单,咱们来看一下。

MVC = Model View Controller

这张图很好的展现了每一个模块的功能和相互的联系:

用户在浏览器中发送请求以后,

browser 把这个请求发给了 controller,

须要它作一些处理,

而后发送到数据库中去查询,

获得结果以后,

把结果发给 View 层进行渲染,

用 html 的标签好看的表示出来,

渲染以后的结果再返回给 controller,

再返回到浏览器里显示出来。

好比在咱们在点外卖时,你发送请求给服务员,服务员就是 controller 层,他须要处理订单好比查一下仓库里还有没有这些原材料,排好前后顺序再交给厨师等等,厨师作好以后他还须要再包装一下再送到你手上。

后面全部框架都是依托于 MVC 这种方式来设计的。

SSH = Spring + Struts + Hibernate

这个框架虽然也上了年纪了,可是一些老的项目还在用它。

特别是金融 IT 这一块,数据库 dao 层仍是使用的是 Hibernate;而科技公司由于要用到高并发,dao 层用的是 MyBatis,数据交互效率较快。

回到 SSH 框架上来,用过的都知道,它配起来真的麻烦,太多的配置文件了。

SSM = Spring + SpringMVC + MyBatis
Spring Boot

SSM 仍是如今项目中比较常见的,但其实如今在新项目中用的也比较少了,更多的是用 Spring Boot,由于配置很是简单。

为何用框架?

任何一项技术的产生都是为了解决现有的问题的,框架也不例外。

就拿 Spring 这个框架来讲,它提供了项目开发中的一些基础功能,可使咱们程序员更专一于业务逻辑的处理,具体来讲我认为有3点最重要:

  • Spring IoC 容器管理了对象的生命周期和配置,再也不使用 new 的方式建立对象,而是使用依赖注入,下降了组件之间的耦合度;
  • AOP 是 Spring 的核心,用来将一些通用的事务进行统一管理,经常使用于处理日志、安全管理和事务管理等方面。
  • Spring 并不强制项目彻底依赖于 Spring,开发者能够自由选用 Spring 框架的部分来使用。好比我司的框架就是基于 Spring 来作的开发,在 Spring 的框架之上,能够添加我司本身的安全管理等等。
相关文章
相关标签/搜索