0

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

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

4

1 回答 1

2

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

但我不会称它为“模型”,除非是在“视图模型”的意义上。

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

Vaughn Vernon 的示例应用程序

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

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

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

将域对象绑定到它之外的东西

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

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

Vernon 使用域内的 AuthenticationService来处理错误的登录详细信息。

于 2015-03-26T13:17:09.537 回答