java - SPAnish) 体系结构,在哪里放置公共(public)代码?

标签 java maven architecture soa dependency-management

我们有一个像这样的 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/

相关文章:

java - 单击按钮时使用 Android Studio 计算 2 个字符串中的元音数

java - 运行 Axis2 Web 服务客户端在客户端和服务器端生成错误

android - 如何在 build.gradle 中包含多个存储库?

eclipse - 为什么 WTP 插件将一个 Maven 依赖项部署为一个文件夹,而不是一个 jar?

c# - 在同一个项目中添加 ASP.NET MVC 和 Web API Web Application

asp.net-web-api - 字符串类型不能构造

java - 为什么我的 DelayQueue 没有延迟并以错误的顺序打印?

java - 如何使用jsoup设置jsessionid cookie?

java - 如何获取执行jar的绝对路径?

mysql - Sequelize : Performance advantage or just for convenience?