前言

前几天跟朋友谈起框架的事情,回顾了一下当前框架的发展,尤其是Spring Boot,已经把程序员的开发简化到了最初的一个 class 的形式了。这个也是我为什么喜欢领域驱动设计(DDD)的原因,真正回归了本源。回头看历史上的各种框架,从struts开始,到Tapestry、Wicket、SpringMVC,最后到Spring Boot,就是逐渐破坏面向对象(OO)的封装性,再慢慢回归到面向对象的历程。

通用框架的一些概念

我画了一个图,是应用程序的结构,貌似是Spring Cloud/Boot的结构,实际上并不仅仅如此。

我们从底向上分析这个图:

  • 底层是操作系统,目前流行Docker,以及基于Docker的各种派生工具,比如Kubernates、Rancher等。但是微创新不能改变本质,也就是Docker带来了和纯OS之上部署完全不同的一种方式。但是依然属于“部署”的领域。在这个领域中,我们要思考的是拓扑结构、设备内存大小、磁盘空间、网络参数、文件句柄等。
  • 操作系统之上,就是应用系统的各种部件。现在的应用系统,都是异构的,如数据库用Mysql、Oracle,缓存Redis,传输Kafka、MQ等等。这些异构的外部第三方程序需要和自己开发的应用进行集成。这是“系统集成”的领域。在这个领域中,我们要思考的是地址、端口、应用系统的配置参数等。
  • 在自己开发的应用程序结构中,如果用java开发,则要基于Java运行时之上,结合外部的各种库,然后才能在其上开发自己的业务逻辑。这些业务逻辑代码通过编译打包功能,和外部库文件一起构成应用程序。这是“应用集成”的领域。在这个领域中,我们要在代码级别思考API、性能、参数、返回值、调用方式等。
  • 最上层才是自己真正开发的应用逻辑部分。现在一切都回归到“对象”,程序员们只需要把业务逻辑写在class里就可以。但是写出这些代码之前,我们需要进行设计,思考各个class之间的关系,思考界面和后台逻辑的调用方式,思考界面的布局、交互等。这些才是开发真正要关注和要做的事情。

把上图换一种画法,可以更加容易看懂。一层层象蛋壳一样的结构表示不同模块所处的依赖层面。现代软件框架已经发展成了一个庞大的体系,我们需要人工编程的部分,就像鸡蛋的蛋黄一样,核心但是只有一点点。

那么,我们刚才已经说了:

  1. 基于现代框架的编程,已经回归且简单到只需要写一个class的地步了
  2. 在手工编写内容之外,都是集成工作

通用架构也不过是如此。

关于通用框架的一些设想

目前框架方面的顶尖水平依然在Java界,以Spring Boot为代表。现在流行的Spring Cloud的核心依然是Spring Boot。记得2015年的时候,我用Dubbo给客户搭建了一个框架,后来在研究Spring Cloud的时候,发现两个的框架的思路基本一致,编程方法类似。那么,从开发者的角度,能否屏蔽这种差异?

一旦屏蔽了框架实现的差异之后,开发者只需要用纯OO结构去实现自己的业务,框架根据Annotation自动决定加载和运行。也就是说,我们可以把“框架”归类到运行时(Runtime)部分,而不再需要把框架代码也打包到系统里。框架和代码之间的解耦,可以让应用程序的适应性更广:同一套代码,套用不同的框架,就具备了不同的特性,如高可靠、高吞吐量、离线处理等等。

看起来很美!

转载于:https://www.cnblogs.com/BigTall/p/10935495.html

关于通用框架的一些想法相关推荐

  1. 【CV】Mask R-CNN:用于目标实例分割的通用框架

    论文名称:Mask R-CNN 论文下载:https://arxiv.org/abs/1703.06870 论文年份:2017 论文被引:18354(2022/05/03) Abstract We p ...

  2. SLAM的通用框架:GSLAM

    SLAM的通用框架:GSLAM GSLAM: A General SLAM Framework and Benchmark 论文链接: http://openaccess.thecvf.com/con ...

  3. 拿transformer做E2E全景分割,这个通用框架霸榜挑战赛,南大、港大联合提出

    视学算法报道 机器之心编辑部 本文中,来自南大.港大.英伟达等机构的研究者提出了一个使用 transformer 进行端到端全景分割的通用框架,不仅为语义分割与实例分割提供了统一的 mask 预测工作 ...

  4. Transformer霸榜全景分割任务,南大、港大提出一种通用框架!

    来源:机器之心 本文中,来自南大.港大.英伟达等机构的研究者提出了一个使用 transformer 进行端到端全景分割的通用框架,不仅为语义分割与实例分割提供了统一的 mask 预测工作流程,而且使得 ...

  5. Petuum提出序列生成学习算法通用框架

    近日,来自人工智能创业公司 Petuum 的研究人员发表论文,提出序列生成学习算法的通用框架--广义的熵正则化策略优化框架(Generalized Entropy-Regularized Policy ...

  6. linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现

    1 TCP简介 tcp是一种基于流的应用层协议,其"可靠的数据传输"实现的原理就是,"拥塞控制"的滑动窗口机制,该机制包含的算法主要有"慢启动&quo ...

  7. 【论文翻译】HeteSim:异构网络中相关性度量的通用框架

    原文链接:https://blog.csdn.net/Mrong1013967/article/details/115330139 HeteSim:异构网络中相关性度量的通用框架 摘要 相似性搜索是许 ...

  8. 入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?

    简介: 本文除了介绍RobustPeriod的核心技术亮点,还将重点解释如何将它构筑成服务来解决阿里云的业务痛点. 近日,由阿里云计算平台和阿里云达摩院合作的时序多周期检测相关论文RobustPeri ...

  9. em算法 实例 正态分布_Petuum提出序列生成学习算法通用框架

    近日,来自人工智能创业公司 Petuum 的研究人员发表论文,提出序列生成学习算法的通用框架--广义的熵正则化策略优化框架(Generalized Entropy-Regularized Policy ...

  10. 入门学习因果推断在智能营销/权益应用的通用框架

    废话文学一下:入门学习因果推断三周,总算是入了个门- 就着智能权益方面的两个问题(给什么人发券?+ 发什么券?)简单总结一下两个问题的通用框架 (借一张哈罗顺风车的图,如上) 可以从很多已经落地工程化 ...

最新文章

  1. Oracle 并行原理与示例总结
  2. 理解JavaScript中的事件
  3. Unity2D游戏开发基础教程1.2项目、资源和场景
  4. python 系统当前时间向前推2天_python 练习 后台返回当前时间
  5. 机器学习入门案例简单理解——Tensorflow之MNIST解析
  6. STM32学习笔记:读写内部Flash。
  7. ubuntu18.10下面安装nodejs和npm和cnpm
  8. HTML autocomplete
  9. Spring MVC,Spring Boot文件上传
  10. 2021年德国汽车产量预计同比锐减18%
  11. 一寸相思千万绪,人间没个安排处。
  12. 求100以内的素数,全部打印出来
  13. centos7搭建elastiflow
  14. Unity学习 HTC Vive Hi5 2.0
  15. Android apk打包命名规则
  16. 在Mac系统中将html网页转成PDF格式
  17. 盘点常见的7种网络安全威胁
  18. 【路由篇】03. 远程设置并访问内网中二层路由的小米路由器
  19. SEOer未来发展的两个方向
  20. 利用Java反射机制调用类的私有方法

热门文章

  1. 决策树(十二)--XGBoost
  2. 孙鑫MFC笔记之十三--多线程编程
  3. java 鼠标拖拽_JavaScript DOM 鼠标拖拽
  4. PAT (Basic Level) Practice1024 科学计数法
  5. python的内存模型
  6. java 构造器(constructor)是否可被重写(override)?
  7. 一文彻底弄懂 for forEach for-in for-of 的区别
  8. shell实战训练营Day2
  9. 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS
  10. content 控件(24)