你必須瞭解的「架構」小歷史

作項目時咱們一直在說框架、架構,那它究竟是什麼呢?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 的框架之上,能夠添加我司本身的安全管理等等。
相關文章
相關標籤/搜索