作項目時咱們一直在說框架、架構,那它究竟是什麼呢?html
從 dubbo 官網咱們能夠看到架構設計的發展演變史。前端
這裏把架構分紅四類:java
- 單一應用架構
- 垂直應用架構
- 分佈式服務架構
- 流動計算架構
剛開始時 PHP + MySQL 就能夠造成網站了。程序員
這種模式支持中小型網站是沒有問題的,可是一旦造成大型網站就支撐不住了。數據庫
因此如今各大主流公司仍是會選擇 Java。後端
咱們項目中的類會打包成一個 JAR 包運行在服務器裏,最初全部模塊是在一個 JAR 包的,也就是單一應用,隨着用戶量的提高、訪問量的增大,JAR 包愈來愈大,單一應用運行起來愈來愈慢,因此單一架構就再也不適合了。設計模式
此時引入分佈式架構,把一個模塊拆分紅幾個單獨的模塊以提高效率,一個 JAR 包分紅幾個 JAR 包運行在不一樣的服務器上,引入了 MVC 的設計模式。瀏覽器
隨着業務量的劇增,幾臺服務器也已經不夠用了,效率比較低,此時每一個模塊用 N 臺服務器進行部署。安全
當請求進來以後,會按照一些策略,把它隨機分配到負載均衡的服務器。此時每一個服務器的 request 就比較少了,提升了效率。這個就是分佈式服務架構。前端框架
每臺服務器之間須要通訊的,用的就是 RPC 框架。
當分佈式架構也不夠用了,最後演變成流式架構,此時 SOA 是關鍵。
如今 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 多個對應的處理:
而用 MVC 以後,很是簡單,咱們來看一下。
MVC = Model View Controller
這張圖很好的展現了每一個模塊的功能和相互的聯繫:
用戶在瀏覽器中發送請求以後,
browser 把這個請求發給了 controller,
須要它作一些處理,
而後發送到數據庫中去查詢,
獲得結果以後,
把結果發給 View 層進行渲染,
用 html 的標籤好看的表示出來,
渲染以後的結果再返回給 controller,
再返回到瀏覽器裏顯示出來。
好比在咱們在點外賣時,你發送請求給服務員,服務員就是 controller 層,他須要處理訂單好比查一下倉庫裏還有沒有這些原材料,排好前後順序再交給廚師等等,廚師作好以後他還須要再包裝一下再送到你手上。
SSH = Spring + Struts + Hibernate
這個框架雖然也上了年紀了,可是一些老的項目還在用它。
特別是金融 IT 這一塊,數據庫 dao 層仍是使用的是 Hibernate;而科技公司由於要用到高併發,dao 層用的是 MyBatis,數據交互效率較快。
回到 SSH 框架上來,用過的都知道,它配起來真的麻煩,太多的配置文件了。
SSM = Spring + SpringMVC + MyBatis
Spring Boot
SSM 仍是如今項目中比較常見的,但其實如今在新項目中用的也比較少了,更多的是用 Spring Boot,由於配置很是簡單。
任何一項技術的產生都是爲了解決現有的問題的,框架也不例外。
就拿 Spring 這個框架來講,它提供了項目開發中的一些基礎功能,可使咱們程序員更專一於業務邏輯的處理,具體來講我認爲有3點最重要: