DDD - 外部上下文的凭据

时间:2016-08-05 22:59:32

标签: api domain-driven-design bounded-contexts

我的应用程序代表用户自动执行外部系统上的某些操作。让我们调用我的应用程序Inventory BC的上下文。

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

此外,用户可能在该外部系统上有几个不同的帐户,我的应用程序将为他们处理这些帐户。所以我有一个单独的有界上下文,我从外部系统保留用户详细信息和他们的帐户ID。让我们说身份BC。

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

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

还是有更好的做法?

编辑1:另外,如果我要将我的所有背景都折叠成一个,那么什么是合适的?

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

1 个答案:

答案 0 :(得分:1)

它有点模糊,但在身份BC中使用外部系统凭据以及系统的用户详细信息感觉就像是漏洞抽象。难道不是一个反腐败层才能保护你免受这种伤害吗?

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