领域驱动设计应用层可以有模型吗

Can Domain Driven Design Application layer have Models

ddd中的应用层可以有模型吗?

更明确地说,我的系统中有一个 credential 实体与域层之外的身份验证过程相关,那么这个实体在哪里?我是领域驱动设计的新手。

应用层可以使用自己的数据表示。如果将它连接到用户界面,应用层将不得不将域对象转换为可查看的数据。

但我不会称它为 "model",除非在 "view model."

的意义上

没有更多细节,很难说出更有用的东西,所以我将尝试通过示例回答您的集成问题。

Vaughn Vernon 的示例应用程序

看看 Vernon's sample application,您可以将身份验证服务与您的消费应用程序隔离开来。 Vernon 为此建模了三个独立的 Java 应用程序。

现在有提供所有身份验证的 IdentityAccess 服务。在那里,您可以创建 Tenant 个实体。然后是协作应用程序(论坛等),它使用自己的 Tenant.

内部表示

因此客户端应用程序获取 TenantId 并创建自己的 Tenant 对象以将论坛线程与租户相关联。 Tenant不会在此应用程序中更改或保留,仅供使用。

将域对象绑定到域外

你的观点可能更简单。如果您有一个 Credential 实体(在您的域中)和它之外的一些身份验证逻辑,请使 "authenticator" 实现域的专用接口并将其注入回域对象 if你真的需要。(这就是端口和适配器方法:双方都可以指定接口并等待具体实现;另一方实现接口并注入一个对象。)

我想您实际上不必从您的域中访问身份验证逻辑,但我们必须查看更多代码来判断这一点。

Vernon 使用 AuthenticationService inside the Domain 来处理错误的登录详细信息。