【发布时间】:2011-08-04 11:43:37
【问题描述】:
我正在探索清晰的架构,并且已经看到它实际上将实体传递到其他层(就表示层而言)。它不应该暴露实体的接口以使其更松散耦合吗?还是我错过了什么?
【问题讨论】:
-
你能给出一个代码示例来说明你的意思吗?
标签: nhibernate fluent-nhibernate domain-driven-design sharp-architecture
我正在探索清晰的架构,并且已经看到它实际上将实体传递到其他层(就表示层而言)。它不应该暴露实体的接口以使其更松散耦合吗?还是我错过了什么?
【问题讨论】:
标签: nhibernate fluent-nhibernate domain-driven-design sharp-architecture
我相信您可以通过多种方式实践 DDD,最重要的是实际查看您的项目需求和情况。如果您将在 asp.net MVP 或 MVC Web 应用程序上练习 DDD,并且该应用程序可能不会与其他外部系统通信。然后使用服务层和 DTO 对象只是为了不让表示层知道有关域的任何信息,这可能是矫枉过正。最重要的是您隐藏/删除创建实体、域逻辑和将实体置于无效状态的可能性的知识。所有这一切都可以通过一个好的域实体 api 来实现。然后我觉得将实体发送到表示层可能是一个好习惯。您还可以使用存储库在表示层的 Controller/Presenter 类中加载实体。 如果您查看大量 DDD 示例,您会发现人们倾向于选择最适合他们的方式。 我从未见过任何使用接口公开实体的示例和实践。仅使用内部、受保护和只读属性就可以实现很多目标。这将隐藏表示层的 api 功能。
/最好的问候 BacceSR
【讨论】: