框架的本质,是解决了以下两个问题:
- 使用已知的最优解,来解决已知的共性问题,节约重新发明轮子的工作。
- 强行进行规范性的约束。
框架应该提供的几个核心能力,或者说要提供关键特性:
- 路由管理
- MVC分层
- ORM
- 基本的安全控制(防SQL注入等)
- 切片编程
- 日志机制
- 异常机制
- 多语言支持机制
- 对第三方工具包的集成机制
关于框架的发展方向:
Java主流框架,从Spring到SpringBoot,从Hibernate到MyBatis,包括国内最近出的TDengine,背后都有一个思路,就是设计者逐渐抛弃复杂的过度设计,回归到二八原则,用最简单的方法为大部分项目提供更轻量级的、效率更高的技术方案。
社区建设方面PHP一直是落后于Java的,不过显然也会是这样的一个发展趋势。从这个角度看,Laravel框架本身比较臃肿,很多功能的实现机制也太过于复杂,应该并不会代表未来的发展方向。对于框架而言,提供的功能越是丰富,路就走得越窄。在代码的世界,Off-The-Rack的东西,应该是和具体业务无关的,否则适用范围有限。Off-The-Rack的程度越高,这个适用范围就越窄。
仅就这些年遇到的项目需求,我对框架的期望是:
- 最好大家都逐步过渡到完全的前后端分离,这样框架可以更纯粹,不用分别照顾两种情况。
- 框架本身尽量简洁,但是可以在各个不同的环节,集成或者替换第三方的组件,这样可以促使社区组件丰富化、专业化,不同场景可以自由选择不同组件。类似装修,简单做硬装,用新做软装。
- 从框架角度,支持API版本的管理。
- 期待一些有意思的组件,如灰度发布等。