asp.net-mvc - ASP.NET MVC 与 nTier 关注点分离

标签 asp.net-mvc entity-framework model-view-controller separation-of-concerns n-tier-architecture

在 nTier 架构中,创建数据、业务、工作流和 UI 层是很常见的。在此设置中,您的数据层和业务层是分离的,并且可以被其他层重用。

在 ASP.NET MVC 中,模型似乎同时充当业务层和数据层,因为很明显模型就是数据,所有文档都表明业务逻辑属于模型。

当这两层混合时,这种架构如何促进良好的关注点分离?

最佳答案

View 模型和域模型之间存在差异。域模型是您的应用程序域。这些模型可以在任何地方、任何层中使用,并且它们通常放在一个单独的共享项目中。您的 View 模型仅适用于 UI。它们取决于您的页面需求/结构。假设您想创建用户管理页面,那么您的 View 模型可能是一个具有 2 个属性的类 UserList<Role>其中 UserRole是领域模型。

最后,您的数据模型通常只是数据库传输对象。 Entity Framework 模型通常同时用作数据和领域模型。


那么,回答您的问题:您自己选择适合自己的混音模型级别。问题是如果你不想混合,那么你将在解决方案中有相当多的模型重复,你将不得不手动或在像 AutoMapper 这样的库的帮助下从一种类型的模型映射到另一种类型的模型。 .这就是开发人员选择一些折衷方案的原因。

关于asp.net-mvc - ASP.NET MVC 与 nTier 关注点分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314641/

相关文章:

c# - 如何将 'default using' 添加到所有 cshtml 页面?

c# - ASP.NET MVC3 - 存储 IsAdmin 信息的最合适方法

jquery - JavaScript MVC 框架

asp.net-mvc - Devexpress MVC Gridview 根据所选行自定义排序

asp.net-mvc - 将 Glimpse 添加到引用 EF 项目的 MVC 项目的正确方法是什么?

c# - 如何通过分组将 <Entities> 列表转换为一个字符串?

c# - 基于特定属性的 Entity Framework 预加载

java - mvc View 对象最佳实践

java - 什么时候应该使用 PathVariable 什么时候应该使用 RequestParam

jquery - 如何检查父元素是否隐藏子元素?