【问题标题】:Question About ASP.NET MVC vs. ASP.NET Web Froms关于 ASP.NET MVC 与 ASP.NET Web 窗体的问题
【发布时间】:2010-12-20 09:24:04
【问题描述】:

我是一名初级程序员,我不明白 MVC 的概念!我的编码方法是将我的应用程序设计分为 3 层:

表示层 业务层 数据访问层

我发现它对初级开发人员或至少对我来说非常实用,所以我真的不知道 明白 MVC 的意义,因为我相信 MVC 只是试图将逻辑与 UI 分开。对吧?

我很困惑,请你给点建议!

任何帮助将不胜感激...

我决定用这本书来帮助我更好地了解代码设计:

http://www.amazon.com/Professional-ASP-NET-Design-Patterns-Millett/dp/0470292784/ref=sr_1_1?ie=UTF8&qid=1292836936&sr=8-1

注意:我也决定开始学习 TDD。

问题: 将我的代码设计分为 3 层(表示层、dal 层和业务层)是否符合 MVC 概念?

【问题讨论】:

  • 您的问题的答案 - 否。

标签: asp.net asp.net-mvc webforms


【解决方案1】:

在成为经典的 asp 和 webforms 开发人员超过 10 年之后,我是一个相当晚的“转换”到 mvc 的人。然而,大约 18 个月前,出现了一个项目,我们的管理团队认为这将是一个很好的独立项目来试用 mvc。我的任务是管理这个项目。我承认我非常怀疑,因为我们有大量为 webforms 构建的组件以及我们自己的 webforms 项目“迷你框架”。

当我慢慢发现使用 mvc 范式更接近金属实际上是一个更有成效的过程时,想象一下我的惊讶。很快,我什至开始质疑是否在其他正在启动的新项目中使用 webforms 或 mvc。美妙之处在于我们的 webforms 项目使用了您提到的 3 层方法,对我们来说,切换 webforms 部分并将我们的 BLL/DAL 插入到位并在 mvc 项目中使用非常容易。

总而言之,掌握 mvc 的概念需要时间,但值得庆幸的是,那里有很多很棒的书籍和教程:

http://nerddinner.codeplex.com/

http://blog.stevensanderson.com/

http://www.amazon.com/ASP-NET-Framework-Second-Experts-Voice/dp/1430228865/ref=pd_sim_b_2

我会推荐 steven Sanderson 的书,如果它是你看过的唯一一本。它将许多核心概念的非常全面的演练联系在一起,从而在文章结尾处对“它是如何工作的”有一个非常详细的理解。

简而言之,,使用 3 层进行设计不 = mvc。但是,如果您担心失去在 3 层方法中构建的知识和核心功能,则不必担心。 mvc 和 BLL/DAL 可以很好地协同工作。从 web 表单迁移时会担心您会丢失所有以前的 dpmain 逻辑 - 简而言之,它们很高兴地合并/共存,并且完全有可能仍然有一部分团队致力于业务逻辑,而另一部分则专门处理mvc 的实现。

我本来打算谈论出色的 jquery 集成 - 但这是另一天的故事 :)

【讨论】:

    【解决方案2】:

    我建议您先观看此视频:MVC or Webforms - Choosing the Right Programming Model

    如果您决定使用 MVC,那么只需看看这里的所有教程:http://www.asp.net/mvc

    【讨论】:

      【解决方案3】:

      既然您提到了 TDD,我认为这可能是使用 MVC 而不是 Web 表单的最佳理由。

      MVC 更适合 TDD,因为它允许使用单元测试框架测试交互。我认为this book 是 TDD 与 MVC 的良好开端

      【讨论】:

        【解决方案4】:

        MVC 几乎可以代表任何含义,具体取决于您所讨论的场景。

        在 ASP.NET(不是 MVC)中,您制作的页面基本上同时包含逻辑和视图。当一个 aspx 页面加载时,“代码隐藏”(逻辑)被执行并将数据绑定到视图以显示它。这一直在重复。

        在 ASP.NET MVC 中,您定义控制器,而控制器又包含通常构建称为视图模型的对象的“动作”(方法)。视图模型包含视图将用于显示的数据。这在某种程度上等同于 ASP.NET 中的数据绑定。

        ASP.NET MVC 默认使用 Web 表单作为其视图,但这可以相对容易地更改为另一个视图引擎。

        所以要回答您的最后一个问题,如果您想将应用程序拆分为“层”,那么 ASP.NET MVC 是一个合理的选择。如果您想要良好的可测试性,ASP.NET MVC 也是一个不错的选择,因为这是旧 ASP.NET 的主要问题之一。

        【讨论】:

          猜你喜欢
          • 2010-11-11
          • 2014-06-05
          • 1970-01-01
          • 2016-11-12
          • 2015-03-25
          • 1970-01-01
          • 1970-01-01
          • 2012-09-23
          • 2019-05-22
          相关资源
          最近更新 更多