Domain driven design 在使用DDD的分层应用程序中,应在何处声明数据传输对象(DTO)

Domain driven design 在使用DDD的分层应用程序中,应在何处声明数据传输对象(DTO),domain-driven-design,dto,data-transfer-objects,n-layer,application-layer,Domain Driven Design,Dto,Data Transfer Objects,N Layer,Application Layer,我曾经在域层声明过我的DTO。但那是在我后来理解应用层应该向域层传递原语以实例化域模型实体而不是DTO之前。现在我知道了这一点,我不需要在域层声明DTO 由于我的应用程序层有应用程序服务,这些服务将数据转换为DTO和DTO之间的数据,从而将数据传输到各个层,因此我认为DTO也可以在应用程序层中声明 那么,应用层通常是应该声明DTO的地方吗 提前谢谢 更新:2016年2月25日 我将根据.NET应用程序体系结构指南第二版中的以下引用在应用程序服务层中为我的应用程序服务定义接口:“在服务层中,您定义

我曾经在域层声明过我的DTO。但那是在我后来理解应用层应该向域层传递原语以实例化域模型实体而不是DTO之前。现在我知道了这一点,我不需要在域层声明DTO

由于我的应用程序层有应用程序服务,这些服务将数据转换为DTO和DTO之间的数据,从而将数据传输到各个层,因此我认为DTO也可以在应用程序层中声明

那么,应用层通常是应该声明DTO的地方吗

提前谢谢

更新:2016年2月25日 我将根据.NET应用程序体系结构指南第二版中的以下引用在应用程序服务层中为我的应用程序服务定义接口:“在服务层中,您定义并实现服务接口和
数据协定。

由于DTO用于将数据从应用程序传输到客户端应用程序,因此应在处理对应用程序的服务调用的层(最外层)中声明。无论您称之为应用层还是其他什么(在我的公司,我们称之为“服务层”),都取决于您。

谢谢Adrian。我同意你的回答。我刚刚在服务层指南部分的.NET应用程序体系结构指南(第二版)中找到了答案,其中指出:“在服务层中,您定义并实现服务接口和数据契约…”@Robertcode抱歉,我刚刚编辑了答案并插入了逗号。答案是“donat3llo”写的:-)