0

我正在开始一个 MVC5 + DDD + EF6 项目并生成一个框架解决方案。我有两个关于最佳实践/约定的问题:

1) MVC 项目中的模型文件夹似乎是多余的,因为模型实际上是在域中。如果任何视图需要专用的 ViewModel,那么我知道 ViewModels 文件夹是合适的。

每个 MVC 区域中的 ViewModels 文件夹是否合适,MVC 项目中的 Models 文件夹是否可能用于任何目的?

2)在我之前的项目中,我们将领域模型称为“模型”,但是由于实体框架中的术语,我理解有些人称它们为“实体”。

我在新项目中的意图是在一些领域模型中创建一些丰富的行为,它们不仅仅是愚蠢的 DTO(数据传输对象)。

在领域层中,将它们称为模型或实体是惯例/最佳实践吗?

4

2 回答 2

4

我的看法是这样的:


1) 如果始终为视图创建视图模型,即使当前感觉像是一对一映射。(您可以使用 AutoMapper 之类的工具来帮助完成此处的重复编码任务。原因是您的域和视图现在看起来非常相似,但 6 个月后,随着您了解所需内容,您的域发生了很大变化,并且您的视图不再将 1 对 1 映射到您的域模型。在每个区域中保留一个 ViewModels 文件夹,当您需要可重用的 ViewModel 时,重构并将其移动到公共区域。


2)领域项目可以是实体/模型,无论你走到哪里都大不相同。只要团队就实体何时是代码项或实体是您试图代表的现实生活中的事物达成一致......一切都很好。随着你无处不在的语言的发展,事情变得更容易。绝对同意使域尽可能丰富,因为它有助于在系统变大时处理复杂性。将Eric Evans - Domain Driven Design书放在您的桌面上,祝您在新项目中一切顺利。

于 2013-11-15T05:56:12.240 回答
1

如果您愿意,可以将 Models 文件夹重命名为 ViewModels。什么都不会破裂。

但我更喜欢保持原样,然后仅将 ViewModels 称为客户端对象(Knockout 或类似的东西)。

我更喜欢在域中放置实体文件夹。

于 2013-11-15T14:27:17.170 回答