ddd中的应用层可以有模型吗?
更明确一点,我的系统中有一个credential
实体,它与我的域层之外的身份验证过程有关,那么这个实体将在哪里?我是Domain Driven Design的新成员。
答案 0 :(得分:2)
应用层可以使用自己的数据表示。如果将其连接到用户界面,则应用层将必须将域对象转换为可查看的数据。
但我不会称之为"模型",除非是在"视图模型的意义上。"
如果没有更多详细信息,很难说更有用,所以我会尝试通过示例回答您的集成问题。
看一下Vernon's sample application,您可以从您的消费应用程序中隔离一个身份验证服务。 Vernon为此建立了三个独立的Java应用程序。
现在有IdentityAccess服务提供所有身份验证。在那里,您可以创建Tenant
个实体。然后是协作应用程序(论坛等),它使用自己的Tenant
内部表示。
因此,客户端应用获取TenantId
并创建自己的Tenant
对象,以将论坛帖子与租户相关联。 Tenant
未在此应用中更改或保留,仅用过。
您的观点可能更简单。如果你有一个Credential
实体(在你的域中)和一些auth逻辑,那么就建立"身份验证器"实现Domain的专用接口,并在需要时将其注入Domain对象。(这是端口和适配器方法:双方可以指定接口并等待具体实现;另一方实现接口并重新注入一个对象。)
我猜你真的不必从你的域内访问身份验证逻辑,但我们必须看到更多的代码来判断这一点。
Vernon使用AuthenticationService inside the Domain来处理错误的登录详细信息。