在 nTier 架构中,创建数据、业务、工作流和 UI 层是很常见的。在此设置中,您的数据层和业务层是分离的,并且可以被其他层重用。
在 ASP.NET MVC 中,模型似乎同时充当业务层和数据层,因为很明显模型就是数据,所有文档都表明业务逻辑属于模型。
当这两层混合时,这种架构如何促进良好的关注点分离?
最佳答案
View 模型和域模型之间存在差异。域模型是您的应用程序域。这些模型可以在任何地方、任何层中使用,并且它们通常放在一个单独的共享项目中。您的 View 模型仅适用于 UI。它们取决于您的页面需求/结构。假设您想创建用户管理页面,那么您的 View 模型可能是一个具有 2 个属性的类 User
和 List<Role>
其中 User
和 Role
是领域模型。
最后,您的数据模型通常只是数据库传输对象。 Entity Framework 模型通常同时用作数据和领域模型。
那么,回答您的问题:您自己选择适合自己的混音模型级别。问题是如果你不想混合,那么你将在解决方案中有相当多的模型重复,你将不得不手动或在像 AutoMapper
这样的库的帮助下从一种类型的模型映射到另一种类型的模型。 .这就是开发人员选择一些折衷方案的原因。
关于asp.net-mvc - ASP.NET MVC 与 nTier 关注点分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314641/