asp.net mvc vs client-heavy webforms

时间:2011-05-06 16:22:53

标签: asp.net-mvc webforms

在最近设计一个中型到大型的Web应用程序时,我决定采用客户端大量的webforms实现,而不是用于UI层的asp.net MVC。

原因在于使用webforms很容易快速敲击屏幕并将Web应用程序粘合在一起(我使用Telerik的radcontrols,因为它们具有丰富的客户端模型)。我发现越早我得到一个客户端的原型UI,他们就能越快看到它并将其演变成他们真正想要的东西。

当我说客户端繁重的webforms时,我主要绑定数据客户端,然后使用Web服务处理来自客户端的事件 - Web服务与我的业务层交互并处理JSON。例如,当一个UI事件需要更新许多控件时,优势就来了 - 我可以回退到asp.net页面循环并触发部分回发,在更新面板中包含各种控件。

我看到它的方式,我可以吃蛋糕,我可以吃它!我可以为我的应用程序的性能关键区域使用闪电般的JSON Web服务,但我可以恢复到复杂UI区域的回发/部分回发模型。总而言之,开发时间和性能都很重要。

最后,一个问题!

我不是试图抵制MVC只是简单地问它是否比我上面做的更好,如果是这样,为什么?

3 个答案:

答案 0 :(得分:2)

使用Web表单的原因是有效的:快速原型设计可以在客户端前获取模拟UI。另一个原因是大量供应商提供服务器控件以转储到Web表单页面。

我个人认为MVC对于那些习惯使用拖放式设计器而不是手工编辑HTML的人来说有一点学习曲线。也就是说,一旦你通过它,我不相信你再次使用网页表格。有很多控件弹出,与MVC很好地协同工作。 Telerik's MVC Extensions只是一个例子,恰好也是开源的。

答案 1 :(得分:1)

在某些情况下,您回退到页面回发,这意味着您实际上正在维护两个不同的模型。一个在客户端,一个在服务器端。在回发的情况下,您在服务器端进行更改,现在您需要找到一种方法将更改传达给客户端。我不知道你是怎么做的,但这不是完全可扩展的,因为每个更改都必须在客户端和服务器端之间同步。在MVC中,我们使用服务器端View模型来处理这个问题,这些模型由框架在客户端自动处理。 (最重要的是我们使用像Knockoutjs这样的客户端绑定库,它们比MVform更容易使用MVC)

其次,您在webforms中也没有获得路由优势。所以你的路线仍然看起来那些丑陋的Mysite.com/mypage.aspx。

答案 2 :(得分:0)

我在这里有一个房地产应用程序:www.homevana.com。这是一个网络表单应用程序,但我打赌你不会知道它。对于这个项目的要求,当有大型复杂形式来完成收集有关待售房屋的数据时,仍然使用网络表格的客户端重型应用程序是最佳选择。因此,Homevana应用程序上的大多数.aspx页面都没有代码,但是当存在具有复杂验证的表单时,我使用带有服务器控件的.aspx页面和Peter Blum的验证套件:http://www.peterblum.com/Home.aspx(当然所有复杂的客户端验证)迅速完成工作的这一方面。

您可以通过nuget:http://www.hanselman.com/blog/IntroducingASPNETFriendlyUrlsCleanerURLsEasierRoutingAndMobileViewsForASPNETWebForms.aspx安装的FriendlyUrl软件包可以轻松摆脱“丑陋”.aspx扩展名,但您也可以使用一个IIS7正则表达式网址路由规则。

这是关于工作的正确工具。 MVC非常棒,我还有许多其他项目,我使用MVC,但它并不总是满足项目要求的最佳工具。