1

我的应用程序代表用户在外部系统上自动执行一些操作。让我们将此应用程序的上下文称为 Inventory BC。

由于这是我的应用程序的主要特征之一,因此它被建模为域服务并通过反腐败层实现。到目前为止一切都很好。

此外,用户可能在我的应用程序将为他们处理的外部系统上拥有几个不同的帐户。所以我有一个单独的有界上下文,我将用户详细信息及其帐户 ID 保存在外部系统中。假设身份BC。

现在,Inventory BC 的反腐败层需要外部系统帐户 ID 和凭据。帐户 ID 是 Inventory BC 的一部分,用于分隔外部帐户和无法跨这些外部帐户进行的操作。但我不确定我应该在哪里存储凭据以及如何从 Inventory ACL 中检索它们。

我应该将凭据与他们的帐户 ID 一起保存在 Identity BC 中吗?然后我想我可以创建一个应用程序服务来返回给定帐户 ID 的凭据并从 Inventory ACL 调用它。

还是有更好的做法?

Edit1:另外,如果我要将所有上下文合二为一,什么是合适的?

Edit2:在我的外部系统域服务上,凭据应该是方法参数的一部分吗?还是我应该继续使用涉及 ACL 级别凭据的解决方案?

4

1 回答 1

1

这有点模糊,但是在 Identity BC 中拥有外部系统凭据以及系统的用户详细信息感觉就像是抽象的泄漏。反腐败层不正是应该保护您免受这种情况的影响吗?

如果您认为 ACL 的工作是从您的世界适应外部系统的世界,那么我会说从您的 ID 映射到他们的 ID 也是它的工作,并且只有它应该有权访问外部 ID。如何以及在何处存储这些 ID 是一个技术细节。也许将它们存储在与您的内部 ID 相同的数据库表中更方便。但我认为他们不应该成为身份 BC 的一部分。

于 2016-08-11T15:13:21.463 回答