前几天跟朋友谈起框架的事情,回顾了一下当前框架的发展,尤为是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)部分,而再也不须要把框架代码也打包到系统里。框架和代码之间的解耦,可让应用程序的适应性更广:同一套代码,套用不一样的框架,就具有了不一样的特性,如高可靠、高吞吐量、离线处理等等。架构
看起来很美!框架