阅读OSGi 应用程序设计后 - 我是否在滥用服务框架?以及将 OSGi 捆绑包组合成连贯的“应用程序”的最佳方法是什么,我现在陷入了如何应用“不要对 OSGi 编程”口号的棘手问题。
假设有界上下文是整个应用程序而不是单个包,我应该可以自由地在 API 包中声明一些聚合根实体,并以 DDD 样式声明用于处理所述实体的存储库。现在,问题的症结在于:显式存储库似乎与 OSGi 风格对立,因为存储库本身就是一个(域对象的)注册表,并且这种设计回避了 OSGi 服务注册表。但是要取消存储库将需要消费者对 OSGi 进行编程,以便执行实体的查找。
据说存储库只是一个门面——这是否意味着我应该创建一个委托给服务注册中心的存储库实现?这似乎不是一个连贯的方法,因为消费者将有两个进入域模型的入口点:存储库和服务注册本身。放弃存储库将不再是 DDD,因为我们回到了以意大利面条式的方式将域逻辑与框架代码混合在一起。
那么这里的要点是什么?领域驱动设计是否与“OSGi 方式”不兼容,还是我遗漏了一些关键概念?