前幾天跟朋友談起框架的事情,回顧了一下當前框架的發展,尤爲是Spring Boot,已經把程序員的開發簡化到了最初的一個 class 的形式了。這個也是我爲何喜歡領域驅動設計(DDD)的緣由,真正迴歸了本源。回頭看歷史上的各類框架,從struts開始,到Tapestry、Wicket、SpringMVC,最後到Spring Boot,就是逐漸破壞面向對象(OO)的封裝性,再慢慢迴歸到面向對象的歷程。java
我畫了一個圖,是應用程序的結構,貌似是Spring Cloud/Boot的結構,實際上並不單單如此。程序員
咱們從底向上分析這個圖:sql
把上圖換一種畫法,能夠更加容易看懂。一層層象蛋殼同樣的結構表示不一樣模塊所處的依賴層面。現代軟件框架已經發展成了一個龐大的體系,咱們須要人工編程的部分,就像雞蛋的蛋黃同樣,核心可是隻有一點點。數據庫
那麼,咱們剛纔已經說了:編程
通用架構也不過是如此。緩存
目前框架方面的頂尖水平依然在Java界,以Spring Boot爲表明。如今流行的Spring Cloud的核心依然是Spring Boot。記得2015年的時候,我用Dubbo給客戶搭建了一個框架,後來在研究Spring Cloud的時候,發現兩個的框架的思路基本一致,編程方法相似。那麼,從開發者的角度,可否屏蔽這種差別?網絡
一旦屏蔽了框架實現的差別以後,開發者只須要用純OO結構去實現本身的業務,框架根據Annotation自動決定加載和運行。也就是說,咱們能夠把「框架」歸類到運行時(Runtime)部分,而再也不須要把框架代碼也打包到系統裏。框架和代碼之間的解耦,可讓應用程序的適應性更廣:同一套代碼,套用不一樣的框架,就具有了不一樣的特性,如高可靠、高吞吐量、離線處理等等。架構
看起來很美!框架