netcorepal-cloud-framework
netcorepal-cloud-framework copied to clipboard
模块管理和依赖注入的需求讨论与设计
这里讨论模块管理和依赖注入的需求与设计
与 #20 相关
有没有考虑参考ABP那样的模块化
ABP的高度封装集成,类似于springboot的设计思路,优势是默认情况下非常便捷,劣势是因为封装本身就是一种复杂度,当使用者期望深入掌控系统的时候,会有额外的学习(心智)负担,这也是为什么会觉得“重”的原因。
在这个项目里,我们在封装方面时刻保持克制,期望能保持框架/组件的简单,也就是轻量化,尽量避免这些封装,例如“基于属性的依赖注入”,尽可能在“易用”和“易掌控”之间保持平衡。
模块管理:
基础需求:
- 模块的插拔(模块所属对象的“生杀”)——空间
- 模块生命周期管理——时间
扩展需求:
- 模块接口的克制 interface IModule只设计最小接口;事件可以在Module构造函数中用事件总线注册。
- 事件的时间性 一个Initalize等事件,如果需要,可以(自动)在前后加入两个事件:Pre, Post。
- 模块的嵌套性 IModule是否可支持嵌套?
2和3加起来有点像“十方三世”
目前看aspnetcore框架内置的依赖注入组件已经足够使用了,不太倾向添加类似abp的模块化,更倾向于给开发者最原始的按需注入的能力