MVC(ASP.NET MVC)带3层架构如何协同工作?

Posted

技术标签:

【中文标题】MVC(ASP.NET MVC)带3层架构如何协同工作?【英文标题】:How MVC (ASP.NET MVC) band 3-tier architecture can work together? 【发布时间】:2011-03-04 02:21:21 【问题描述】:

我正在编写一个设计文档,我团队中的人愿意从 ASP.NET WebForm 迁移到 ASP.NET MVC。这很好,但我很难理解 MVC 如何在 3 层(数据层、业务层和表示层)架构中工作。我们可以说模型、视图和控制器是表示层的一部分吗?模型是业务层的一部分吗?

简而言之,MVC 和 3 层架构如何协同工作?感谢您的帮助!

【问题讨论】:

可能重复:***.com/questions/899803/…、***.com/questions/1135056/…、***.com/questions/2843311/…、***.com/questions/14451444/… 【参考方案1】:

使用 MVC 的 N-Tier 可以正常工作。只需遵循 SOLID 原则和其他几个原则,您就可以使您的应用程序保持松散耦合和内聚。

我想说阅读有关 MVC 3 的书籍和观看复数视觉网站视频是您最大的资源。你不能选择“做对你的团队有用的事”。如果说名为 Johnny 和 Timmy 的工作伙伴想要将一堆逻辑放入控制器中,只是因为在短期内“为你的团队工作”的截止日期匆忙,这并不能使它正确/好/聪明。

我在互联网上发现了如此多的不良文章,以至于令人恐惧的是有多少人被带入了一条黑暗的苦难之路。走幸福的道路。将 *** 用于艺术之类的意见,但请查看 msdn 文章、mvc 书籍和pluralsight.com

【讨论】:

【参考方案2】:

首先, 您不必更改为 MVC,只是因为...

但是对于您的问题,MVC 模式中的模型是代表您的业务问题的任何类型的类,可以是任何类型的计算、业务规则或数据访问类。在 MVC 框架中,有一个文件夹可以为您提出解决方案,因此您可以将模型类放在那里,但您不必这样做,您可以创建不同的项目来解决您的业务问题,这就是您的模型。 因此,在这里,您可以定义任何其他即时模式,您可以使用存储库模式并使用 NHibernate 或实体框架来实现。

视图只是向用户显示和接收信息的网页。

控制器是应用程序的入口,类将接收请求,调用必要的模型并重定向到指定的视图。

希望我能帮上忙。

【讨论】:

【参考方案3】:

“层”是一个部署单元,而 MVC 中的“层”是代码中职责的逻辑分离。

【讨论】:

【参考方案4】:

这是相当主观的。 做对你的团队有意义的事情。

MVC 可以非常灵活,几乎没有 MVC 框架在所有语言中都以相同的方式做事。即使在 .net 空间中。 FubuMVC、Spring.net 和 MS MVC 的工作方式都略有不同。

【讨论】:

【参考方案5】:

我认为 ASP.Net MVC 位于表示层。它使用的“模型”类实际上是视图模型,它描述了视图所需的数据结构。您的所有业务逻辑和数据访问都应与您的 MVC 模型和控制器分开。

此外,MVC 的一般“最佳实践”是使控制器代码尽可能简单,这通常意味着在处理繁重工作的业务层中引入一些 for 应用程序服务。

【讨论】:

这正是我要回答的问题。【参考方案6】:

我知道这只是一个 Wikipedia 链接,但有一些关于 n 层与 MVC 架构的信息 here。

【讨论】:

【参考方案7】:

表示层是您的视图。

数据层是您的模型(建议查看存储库模式)。

业务层保持原样。

Controller 可以在加载对象时调用业务层的功能,或者模型可以在请求特定 ViewModel 时调用业务层的功能,否则保持不变。

控制器不应该有扩展的业务逻辑——把它放在它自己的独立 DLL 中。

【讨论】:

以上是关于MVC(ASP.NET MVC)带3层架构如何协同工作?的主要内容,如果未能解决你的问题,请参考以下文章

ASP .NET MVC 架构如何适应传统的多层架构

asp.net三层架构与asp.net MVC各自的区别,各自应该应用在啥场合,在啥情况下用三层,啥情况下用MVC

ASP.NET MVC 的三层架构 + EF数据模型

在具有 3 层架构的 ASP.NET MVC 应用程序中验证业务规则的更好方法是啥?

ASP.NET MVC 的三层架构 + EF数据模型

如何使用 EF Core 代码优先迁移为 ASP.NET Core MVC 配置 N 层架构