MVC中有什么无法在Webform中实现吗

时间:2019-07-09 04:08:26

标签: c# asp.net-mvc webforms comparison

我一直在互联网上研究可以通过Webform实现的MVC中的事物。我发现了很多文章,喜欢整合。

通过为Web表单实现类似的文件夹结构,可以在Web表单中实现MVC中的

1松耦合架构。即,将aspx保留在view文件夹中,将模型保留在模型中,并将自定义控制器保留在controller文件夹中。类似于MVC 2和3中使用aspx视图的aspx视图。

2 MVC URL路由可以通过创建Web表单中的URL重写来实现。

如果我们创建对单元测试友好的服务并以Web形式使用这些服务,那么在MVC中也可以实施3个单元测试。

4依赖注入也可以使用Webform来实现。

5种支持外部jQuery库的MVC简便性也可以使用Webform中的Web API来实现。

6如果我们在Webforms中使用HTML控件,也可以消除Webform服务器端控件的视图状态和事件绑定问题。 (在.net Framework 4.5中的webform 4之后非常容易)

7如果项目中同时包含Web表单和MVC,我们可以轻松地从.webform与MVC控制器通信,反之亦然。

任何人都可以指出MVC中无法使用Web表单实现的任何内容或与上述声明相抵触的任何内容吗?

谢谢

1 个答案:

答案 0 :(得分:1)

“可以使用X实现来自Y的东西”的问题通常是微不足道的-基础语言C#是图灵完备的,因此您可以实现任何可以在使用它的任何技术中实际实现的东西。您也可以使用普通的旧C或Assembly来实现ASP.NET MVC或Webforms中的任何功能。您的观点基本上表明,您可以通过编写大量样板代码来模拟Webforms中的ASP.NET MVC功能。好吧,显然,您可以-您可以使用C来做同样的事情,不是吗?

关于第1点,我也没有发现“实现类似的文件夹结构”是松散耦合体系结构的引人注目的论点。文件夹结构几乎不是体系结构。存在MVC,因为它可以使关注点更容易分离。开箱即用的Webforms 不支持MVC。您是直接向您的专页提出请求,没有控制器。文件夹结构无法解决此问题。您必须非常努力并围绕该问题编写很多代码以实现MVC,基本上是在框架之上编写框架。这就是我们通常所说的“重新发明轮子”。

这个问题归结为人体工程学和长期支持。 Webforms具有很多不可思议的功能,它使控制失去了控制,使实现架构模式更加困难,并且不再真正开发了。重点主要放在Razor Pages和ASP.NET Core MVC上。如果您喜欢使用Webforms,则可能会发现Razor Pages是一个更好的选择。这两个框架都比较现代,可以减少编写代码即可实现干净,松散耦合的体系结构。

作为现代技术的补充说明,jQuery与Webforms一样现代。