netcorepal / netcorepal-cloud-framework

基于 ASP.NET Core 的领域驱动设计微服务架构实现方案
https://netcorepal.github.io/netcorepal-cloud-framework/
MIT License
115 stars 29 forks source link

模块管理和依赖注入的需求讨论与设计 #22

Open witskeeper opened 5 months ago

witskeeper commented 5 months ago

这里讨论模块管理和依赖注入的需求与设计 与 #20 相关

MingHuiJian commented 5 months ago

有没有考虑参考ABP那样的模块化

witskeeper commented 5 months ago

ABP的高度封装集成,类似于springboot的设计思路,优势是默认情况下非常便捷,劣势是因为封装本身就是一种复杂度,当使用者期望深入掌控系统的时候,会有额外的学习(心智)负担,这也是为什么会觉得“重”的原因。

在这个项目里,我们在封装方面时刻保持克制,期望能保持框架/组件的简单,也就是轻量化,尽量避免这些封装,例如“基于属性的依赖注入”,尽可能在“易用”和“易掌控”之间保持平衡。

zhouyongh commented 5 months ago

模块管理:

基础需求:

  1. 模块的插拔(模块所属对象的“生杀”)——空间
  2. 模块生命周期管理——时间

扩展需求:

  1. 模块接口的克制 interface IModule只设计最小接口;事件可以在Module构造函数中用事件总线注册。
  2. 事件的时间性 一个Initalize等事件,如果需要,可以(自动)在前后加入两个事件:Pre, Post。
  3. 模块的嵌套性 IModule是否可支持嵌套?

2和3加起来有点像“十方三世”