asp.net - 对于大型企业项目来说,ASP.NET MVC 是一个糟糕的选择吗?

标签 asp.net asp.net-mvc

我们即将着手开发一个大型企业应用程序。我正在认真考虑使用 ASP.NET MVC,因为:

  1. 我们需要使用 Microsoft 技术(业务逻辑全部是 C#)
  2. 性能至关重要
  3. 我想尽可能多地进行测试

我的团队仅使用 PHP 进行 Web 开发,但对 .NET winforms 非常有经验(因此无论哪种方式,我们都有一个学习曲线)。我担心的是,有些人对 ASP.NET MVC 对大型应用程序的可扩展性表示担忧。但据我了解,网络表单也有自己的问题。

我应该重新考虑 Webform,还是坚持自己的直觉并使用 ASP.NET MVC?

相关:

Should I build my next web app in ASP.NET MVC? https://stackoverflow.com/questions/521388/from-webforms-to-asp-net-mvc

最佳答案

ASP.NET Web 表单是重量级的,会在您的网页上放置大量内容,无论是 html/javascript 还是序列化 View 状态。我记得我的第一个 ASP.NET 网站导致 GC 崩溃,因为所有短命对象都从那个可怕的 View 状态中重新水化。哦,当我年轻而天真的时候(即两年前)......你必须对网络表单有很好的理解才能用它们构建可扩展的网站。可能的?确实。简单的?不是。

ASP.NET MVC 最初更难编码,但SO比 Webform 更容易开发。最难学的东西是 1) 约定又名“魔术字符串”,2) Html + 内联代码又名 ASP 和 3) html 表单。

使用 MVC,您无法摆脱 Webform 开发中常见的状态噩梦,这意味着您的网页会变得非常薄弱。这也意味着你必须更智能地编写你的状态代码。恕我直言,该代码也比传统的 Web 表单简单得多,并且可扩展性更好。

此外,由于框架中包含硬编码和不可模拟的依赖项,因此使用 ASP.NET 进行测试几乎是不可能的。 ASP.NET MVC 用 System.Web.Abstractions 成员替换了所有这些成员,这些成员是这些设计糟糕且无法测试的对象的可模拟包装器。

跑到 MVC,而不是步行。

<小时/>

对于明显的障碍,如果您使用位于 ASP.NET 框架之上的框架,例如 MVC 或您编写的或其他人编写的任何其他框架,显然其中一些备注不适用。

另一方面,如果您像早期人类那样针对 ASP.NET Webforms 模型进行编码(例如 Page_Load 中的 Response.Write()),那么我的评论适用。

您可以编写可针对 ASP.NET 进行测试的代码吗?当然。您可以在不包含您或其他人编写的特殊测试代码的情况下做到这一点吗?当然。如果您有 TypeMock。

关于asp.net - 对于大型企业项目来说,ASP.NET MVC 是一个糟糕的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570705/

相关文章:

c# - 手动 Windows 身份验证

asp.net-mvc - Steve Sanderson 的 BeginCollectionItem 助手无法正确绑定(bind)

javascript - AngularJS 与 MVC Controller 选择什么?

asp.net - 在同一网站下使用 ASP.NET MVC 运行 BlogEngine.NET?

asp.net - ASP.NET 中的正则表达式验证器 for\*,\|,\^,\~

asp.net-mvc - 无法在 ASP.NET VNext 和 Visual Studio 2015 RC 中使用 XUnit 进行单元测试

c# - 为什么这个变量得不到正确的值?

c# - 在 View 中显示模型状态错误?

asp.net - 将 Container.Eval 传递给 ASP.NET Repeater Control 内的 (Html.ReaderPartial)

asp.net - ashx文件中的Asp.Net session 为null