专栏名称: 逸言
文学与软件,诗意地想念。
今天看啥  ›  专栏  ›  逸言

项目札记004:多租户的领域建模设计

逸言  · 公众号  · 程序员  · 2024-09-18 09:47

主要观点总结

文章主要讨论了JasperServer在多租户访问中的功能缺陷,尤其是租户订阅管理与功能权限管理的特性以及订阅收费特性的设计考虑。文章还提到了作者对于领域驱动设计(DDD)方法的应用,并详细描述了领域模型的构建和优化过程。

关键观点总结

关键观点1: JasperServer的多租户访问支持及功能缺陷

虽然JasperServer已经支持多租户访问,但缺乏租户订阅管理与功能权限管理的特性,需要自行设计。此外,订阅收费特性也是必需的,涉及支付、退费、账务和发票等功能。

关键观点2: 对订阅管理特性的设计思路与优先级考虑

作者从MVP(最小可用产品)的角度考虑,认为租户订阅特性的优先级高于订阅收费特性。设计时借鉴了DDD的战术设计模式,但并未完全体现聚合、实体与值对象的概念。

关键观点3: 领域模型的构建与优化

文中描述了领域模型的构建过程,包括BusinessService、FunctionNode等概念。通过引入TenantSubscription等概念,将多对多关系拆解为一对多关系。同时讨论了领域模型中的关系表示,如聚合关系和合成关系。

关键观点4: 面向对象与领域驱动设计的结合应用

文章提到了在设计中结合了面向对象分析与设计的方法,考虑了对象的职责并通过适度抽象降低对象协作之间的依赖强度。同时强调了领域模型应具体表达对象之间的关系。


文章预览

虽然JasperServer已经能够支持多租户的访问,但是却未曾提供租户订阅管理与功能权限管理的特性,需要由我们自行设计。除此之外,还应提供订阅收费的特性,它牵涉到支付、退费、账务甚至发票等功能。 现在回想起来,之所以当时未考虑这一特性的设计,可以从MVP(最小可用产品)的角度考虑,租户订阅特性的优先级显然要高于订阅收费特性,毕竟,我们一开始主要希望通过提供免费服务来吸引更多的租户,从而达到较高的访问量,不太在乎从一开始就能通过租户对服务的订阅获得现金流收入。 当时,我对Eric Evans提出的领域驱动设计(Domain-Driven Design,DDD)方法已有所了解,属于半通不通的水平,因此在为多租户模块进行设计时,借鉴了DDD的一些战术设计模式,不过,并没有在设计模型中清晰体现聚合、实体与值对象的概念,主要还是运用了 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览