代码之家  ›  专栏  ›  技术社区  ›  Achilles

我应该什么时候使用WebForms来提供我的用户正在寻找的用户体验而不是混乱的MVC?

  •  0
  • Achilles  · 技术社区  · 14 年前

    我一直在使用MVC来重新实现我曾经使用WebForms构建的应用程序。我注意到的是:

    1. MVC对于简单的页面非常有效,这些页面不需要在请求之间维护大量的状态。如果页面需要任何复杂度,那么页面对MVC的依附性的纯粹性很快就会变成一个泄漏的抽象,并在视图实现和控制器之间创建一个非常紧密的耦合。我对MVC的理解是,有一个控制器应该能够处理给定模型的多个视图,两个模型之间的分离非常清晰和清晰。

    2. 我看到的另一个摩擦点是,MVC意味着通过模型的设计(我喜欢)强制执行业务规则。但是,在构建应用程序时,我很快就发现验证也应该在客户端进行(如果只是为了避免多个帖子的用户体验)。对我来说,这似乎是设计模式的另一个掺杂,因为我不仅在两个地方存储业务逻辑,而且还存储两种语言!

    我遇到的问题是,虽然WebForms并不能让我几乎控制在MVC中提供给我的UI呈现和标记,但我对于必须在视图中编写度量代码来重新创建应用程序的WebForm版本以及提供类似的用户体验感到很苦恼。

    因此,在接近UI设计和实现解决方案时,我应该如何考虑解决与经典WebForms方法不同的问题?还有什么是梅森-迪克森线(它是否存在),我应该简单地使用webforms来提供我的用户在不创建混乱的MVC应用程序的情况下尽可能容易地寻找的用户体验?

    2 回复  |  直到 14 年前
        1
  •  -1
  •   Mitch Humeniuk    14 年前

    你说的对,MVC只适合简单的页面。如果您正在制作真实世界的应用程序,您将添加许多Web表单已经提供的自定义代码。为了使MVC应用程序和Web表单应用程序一样好地工作,无论如何,您放弃了MVC所谓的好处,并且堆积在Web表单中可能不好的东西上。MVC只是吸引不同开发人员的另一种方式,但实际上并没有为开发社区添加任何有价值的东西。

        2
  •  9
  •   John Farrell    14 年前

    MVC可以像WebForms一样维护状态。如果您真的需要的话,您仍然有会话或者MVC tempdata中的会话。

    说你必须写一个国家管理的度量标准有点夸张。类似于视图状态的实现实际上非常容易创建。其核心的viewstate只是将状态信息序列化并加密到 <input type='hidden'> 字段。对于MVCS模型绑定概念,这非常容易实现。

    您还应该考虑到,使用MVC花哨的javascript,good也变得更易于访问。事实上,在客户机浏览器上维护基于javascript的复杂向导或类似页面要容易得多,您甚至不需要使用会话或tempdata。

    所有新的MVC开发人员最终都会在学习时遇到“状态管理墙”。MVC只是采用了一种不同的方法,你需要调整你的webforms心态来应对。学习如何实施 Post/Get/Redirect 在这方面,javascript/ajax的模式和有效使用真的很有帮助。

    MVC对WebForms开发人员来说只是一种异国情调和疯狂的表现,但是一旦你克服了一些学习障碍,你就会真正开始像冠军一样飞驰并保持状态。:)


    在哪里实现验证是您的选择,而不是必需的。MVC帮助从元数据自动生成客户端验证,因此几乎没有重复。您还应该考虑验证邮政编码和实际业务逻辑之间有很大的区别。