我们有一个像这样的 soa-ish 架构
frontend ->domain A ->db
frontend->business A->domain B ->db
frontend ->domain C ->db
frontend ->domain A ->db
frontend->business B->domain B ->db
frontend ->domain C ->db
other app A
other app B
我们还有其他不属于此 soa 堆栈的应用程序。
我们不时有以下讨论/问题:
“我在域 A 中的代码在域 B 中也很有用,但在业务服务中没有用——我应该把这些东西和它的测试放在哪里”。
让我们假设代码是非常抽象的和领域不可知的,一些非常通用的东西也可以被 soa 之外的“其他”应用程序使用。
所以问题是:
a) 把它放在一个“generic-domain-stuff”模块中,所有域都通过 maven 依赖项继承。这可能最终会越来越大,直到变得一团糟……
b) 创建一个模块“generic-stuff”,它可以被 soa 和“其他”应用程序使用。这可能会导致很多小的 Maven 模块……
c) 复制代码直到您拥有三个用例,然后重构为 a) 或 b)。这尖叫干(不要重复你自己)
我周围的人都有 10 多年的“企业”经验,但我们似乎从来没有为总是相同的问题找到合适的解决方案/答案:)
我很想听听你的经历
最佳答案
(b) 应该是要走的路。如果代码/逻辑是如此通用,那么它最适合库。需要此逻辑的应用程序应通过 Maven(或任何其他依赖管理机制)使用该库。你不应该让一个图书馆成为“神图书馆”。随着时间的推移,将图书馆分成更小的凝聚力部分。这样你就可以防止它变得太大而变得一团糟。不要担心许多 Maven 库 - 许多小而有凝聚力的库比一个庞大的“全能”库要好。
关于java - SPAnish) 体系结构,在哪里放置公共(public)代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165917/