关于框架的一些思考

框架的本质,是解决了以下两个问题:

  • 使用已知的最优解,来解决已知的共性问题,节约重新发明轮子的工作。
  • 强行进行规范性的约束。

框架应该提供的几个核心能力,或者说要提供关键特性:

  1. 路由管理
  2. MVC分层
  3. ORM
  4. 基本的安全控制(防SQL注入等)
  5. 切片编程
  6. 日志机制
  7. 异常机制
  8. 多语言支持机制
  9. 对第三方工具包的集成机制

关于框架的发展方向:

Java主流框架,从Spring到SpringBoot,从Hibernate到MyBatis,包括国内最近出的TDengine,背后都有一个思路,就是设计者逐渐抛弃复杂的过度设计,回归到二八原则,用最简单的方法为大部分项目提供更轻量级的、效率更高的技术方案。

社区建设方面PHP一直是落后于Java的,不过显然也会是这样的一个发展趋势。从这个角度看,Laravel框架本身比较臃肿,很多功能的实现机制也太过于复杂,应该并不会代表未来的发展方向。对于框架而言,提供的功能越是丰富,路就走得越窄。在代码的世界,Off-The-Rack的东西,应该是和具体业务无关的,否则适用范围有限。Off-The-Rack的程度越高,这个适用范围就越窄。

仅就这些年遇到的项目需求,我对框架的期望是:

  • 最好大家都逐步过渡到完全的前后端分离,这样框架可以更纯粹,不用分别照顾两种情况。
  • 框架本身尽量简洁,但是可以在各个不同的环节,集成或者替换第三方的组件,这样可以促使社区组件丰富化、专业化,不同场景可以自由选择不同组件。类似装修,简单做硬装,用新做软装。
  • 从框架角度,支持API版本的管理。
  • 期待一些有意思的组件,如灰度发布等。
原文地址:https://www.cnblogs.com/zhaoxizhe/p/11405875.html