在哪里放DTO,结果对象等?

时间:2009-08-18 07:50:50

标签: c# asp.net-mvc project-structuring

我有一个相当干净的ASP.NET MVC项目结构。但是,我正在努力如何组织作为DTO(数据传输对象)的类的 mass ,例如只是为了封装来自表单(viewmodels)的帖子数据,但不代表完整的域对象或其附近的任何东西;然后是我所拥有的许多“结果”对象,它们将复杂的结果信息从我的服务层传回控制器。你在哪里填充这些/如何组织它们?我现在有一个文件夹超过60个类,它变得杂乱无章。感谢建议!

2 个答案:

答案 0 :(得分:6)

域对象应该位于单独的域模型库中。以框架中立的方式支持域模型的任何东西(例如,没有对ASP.NET MVC,WCF,WPF等的引用)都属于域模型。

在域模型和特定接口框架(在您的情况下为ASP.NET MVC)之间执行转换的类属于该特定项目(您的ASP.NET MVC项目)。

您可以将映射器等放在一个单独的Mappers文件夹中,但就个人而言,我认为沿着功能而不是基础结构构建代码更有价值。

答案 1 :(得分:1)

我使用<CompanyName>.<ProjectName>.Core来存储所有项目特定的类,这些类与我正在编写的特定项目接口并不严格相关。所以DTO,DAO,其他项目特定的类都在那里。

我还使用<CompanyName>.<DotNetLibraryNamespace>来存储可以跨项目重用的通用类,而不是特定于此项目域。例如,字符串操作类可以放在<CompanyName>.Text命名空间中。我总是镜像.net命名空间结构名称,以便任何使用.net类库的人都可以轻松找到我的东西。