2014-10-07 88 views
0

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

当前的架构层看起来象下面这样:

  • 领域层(实体,域名服务)
  • 数据层(资料库,映射,单位工作)
  • UI(MVC应用+ WCF(附Http Endpoints))

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

我想知道是否可以通过内部服务发布像这样的域图层,并通过做这样的事情来了解我是否符合DDD架构。所有业务逻辑都保留在域层。

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

有人能提供一些指导吗?

谢谢!

回答

0

是的,我希望域图层在自己的项目中,因为WCF服务将需要引用该项目以及您的MVC应用程序。一般来说,域对象没有标记为Serializable,因为这是一个基础设施问题,所以您可能需要创建数据传输对象,您可以将其传递给WCF服务,然后它可以使用它来保护域对象并对其执行操作。

我希望这有助于!

+0

非常感谢亚伦。所以现在我的应用程序在MVC项目中都有Windsor容器配置。对你而言,最佳做法是什么?我所做的是在里面创建一个带有Windsor安装程序的XXXX.Windsor图层。从我的MVC项目中,我使用global.asax来安装所有东西,并且我还创建了一些自定义的windsor安装程序到MVC项目中(例如,包含IoC for Controllers)...是否是一种很好的方法来共享这种Windsor容器配置建筑学? – 2014-10-10 21:26:22

+0

我对Windsor并不熟悉,但是,是的,您会将您的IOC容器安装到MVC应用程序本身中。应用程序应该选择具体的实现来为你的域接口使用。这是抽象的主要原因之一。 – 2014-10-13 13:12:56

+0

我通过为IoC配置创建了一个新的横切层来解决了最后一部分。非常感谢。 – 2014-10-16 02:56:49