【问题标题】:DDD + Internal WCF Services Exposing DomainDDD + 内部 WCF 服务公开域
【发布时间】:2014-12-02 05:33:34
【问题描述】:

我有一个使用 DDD(域驱动设计)构建的非常大的应用程序。许多繁重的进程在 IIS 池中运行,我想将其中 1 个进程移动到 WCF(Windows 服务托管)中。这些进程是异步的。

当前架构层如下所示:

  • 域层(实体、域服务)
  • 数据层(存储库、映射、工作单元)
  • UI(MVC 应用程序 + WCF(带有 Http 端点))

该过程会自行生成大量 .PDF 文件,然后向每位员工发送电子邮件。现在,我需要在发送电子邮件之前为每位员工附加其他文件,然后再执行。对我来说,所有这些过程都必须在 WCF Windows 服务(Windows 服务托管)中使用 TCP 端点功能异步。

我想知道是否可以通过内部服务发布这样的域层,并通过执行这样的操作了解我是否符合 DDD 架构。所有业务逻辑都保留在领域层中。

我需要将员工列表从我的 Mvc 控制器发送到 tcp 服务,然后使用域层来处理所有内容。

有人可以提供一些指导吗?

谢谢!

【问题讨论】:

    标签: wcf architecture domain-driven-design


    【解决方案1】:

    是的,我希望域层位于它自己的项目中,因为 WCF 服务将需要引用该项目以及您的 MVC 应用程序。通常,域对象不会标记为Serializable,因为这是一个基础架构问题,因此您可能需要创建可以传递给 WCF 服务的数据传输对象,然后它可以使用它来混合域对象并对其进行操作。

    我希望这会有所帮助!

    【讨论】:

    • 非常感谢亚伦。所以现在我的应用程序在 MVC 项目中都有 Windsor 容器配置。您对此的最佳做法是什么?我所做的是创建一个 XXXX.Windsor 层,其中包含 Windsor 安装程序。从我的 MVC 项目中,我使用 global.asax 来安装所有东西,并且我在 MVC 项目中创建了一些自定义的 Windsor 安装程序(例如,它包含用于控制器的 IoC)......这是共享 Windsor 容器配置的好方法吗?建筑学?
    • 我对 Windsor 并不特别熟悉,但是是的,您可以将 IOC 容器安装到 MVC 应用程序本身中。应用程序应该选择用于域接口的具体实现。这是抽象的主要原因之一。
    • 我通过为 IoC 配置添加一个新的横切层解决了最后一部分。非常感谢。
    猜你喜欢
    • 2016-11-15
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2016-09-07
    • 2019-01-04
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多