【问题标题】:DDD and application layerDDD 和应用层
【发布时间】:2012-02-17 07:08:38
【问题描述】:

是我在DDD中添加@Stateful、@Stateless、@WebService等的应用层(应用服务)吗?从下面的链接来看,这似乎是正确的。

第二个问题:我做了一个repository类,所有涉及repository的方法调用都应该包装在一个应用服务中吗?或者我可以在JSF中直接使用存储库类吗?我何时以及在应用程序层中放置什么。我不明白 EJB 在这个艺术中的位置。

应用层:该层协调应用活动。它不包含任何业务逻辑。它不保存业务对象的状态,但可以保存应用程序任务的进度状态。

http://www.infoq.com/articles/ddd-in-practice

【问题讨论】:

    标签: java jakarta-ee domain-driven-design ejb


    【解决方案1】:

    Java EE 提倡贫血模型,与 DDD 正好相反。如果你想要DDD,你的实体也必须执行业务逻辑,这与服务层和实体的分离是相反的。

    【讨论】:

    • 那么是域/models 拥有@Stateful/@Webservice 等等吗?
    • 是的,但你不能轻易做到这一点。 JavaEE 使使用正确的 DDD 变得困难
    • 那你有什么推荐的?您如何构建应用程序?
    • 您使用 DDD 以外的其他技术吗?
    • 采用传统的贫血风格。托管 bean 调用无状态 bean(服务)调用存储库组件 (DAO),它保存只有 setter 和 getter 的实体。这是通常的情况,尽管一些纯粹主义者反对它
    【解决方案2】:

    假设在 DDD 架构中,应用层和所有其他层只与系统的较低层通信。出于这个原因,应用程序服务包装了存储库,但是如果您使用依赖注入,您可以沿应用程序服务层重用所有存储库

    AppService 的真正工作是协调其他服务或存储库或包含域服务之间的操作。

    在您的实体中必须是仅关于您自己的实体的业务逻辑。始终尊重单一职责原则 (http://www.developerfusion.com/article/137636/taking-the-single-responsibility-principle-seriously/)。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2015-11-14
      • 1970-01-01
      • 2016-04-18
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多