
ASP.NET webforms + ASP.NET Ajax versus ASP.NET MVC and Ajax framework freedom如果可以选择的话,您会选择哪个路径?
或
ASP.NET Webforms / ASP.NET AJAX对MVC有什么限制? 最近我都做过,我会在十次中拿出九次MVC。
我选择使用asp.net表单进行开发的一次是使用gridview控件。我们在MVC的JavaScript框架中使用jquery,但尚未找到控件之类的很好的gridview。我们有一些功能,但是相对于使用asp.net服务器端控件,我们投入了大量的时间进行学习,调整和调试。可以松开Microsoft提供的所有精美的小部件,它们可以进行非asp.net表单开发。这些小部件的丢失正在释放,并且在您首次启动的同时令人恐惧。 最终,我很高兴我们正在进行MVC开发。我的团队和我已经学习了一个新框架(以前我们只是asp.net开发人员),并且已经开始使用html和javascript。这些是我们可以根据需要用于其他项目或其他语言的技能。 不要让人们误以为这是一个明确的选择。您可以两全其美。我的方法是创建一个MVC项目,但是不要添加视图,而要添加标准的asp.net页面,但是要更改背后的代码以继承自MVC.ViewPage,如下所示:
如果将您自己限制在前面代码中的单个表单标签(带有runat = " server ")中,则可以访问完整的代码以访问标准的asp.net服务器控件。这意味着您可以完全控制表示的服务器端控制(例如,使用数据绑定和转发器),而不必进行旧的ASP样式的代码编织。
任何控件的发布都不会发回到页面上,而是发回到控制器上。如果您记得在服务器控件上使用过name属性,则它们最终会出现在FormControls集合中,以根据标准MVC访问页面变量。 那你会得到什么?:
你输了什么?
哦,对于AJAX-肯定是jQuery。向返回JsonResult的控制器方法发出请求确实简化了事情。 我喜欢Webforms,但是ASP.NET AJAX却是一堆废话。 我更喜欢使用WebForms自定义HTTPHandlers处理任何AJAX调用的服务器端。 嘿,投票...... ASP.NET AJAX是一堆废话,因为回调要求重新实例化整个页面类,您不是在调用单个方法,而是每次都在服务器上重建整个页面。 此外,UpdatePanels返回整个页面,仅弹出更新面板中的该部分,这完全浪费了带宽。 我理解为什么要这样做,因为WebForms控件实际上不是很容易以其他方式实现,但是它仍然很糟糕。 我看到大多数响应都在MVC 1.0之前发布。由于我们现在处于2.0预览版中,所以我认为重新访问可能会更好。 在去年3月转到MVC之前,我是ASP.NET开发人员大约五年了。我没有后悔一秒钟。现在我意识到,我对ASP.NET WebForms的了解越强,学习其他技术(例如JavaScript和AJAX的非Microsoft实现)的难度就越大。 Microsoft从WinForms开发方法中利用了他们的ASP.NET开发方法,如果您来自WebForms开发,这可以帮助您学习,但是如果您了解这两种方法之间的差异,那么这不是开发Web应用程序的好方法。 我正在工作的最新项目要求我学习ASP.NET MVC,JavaScript,jQuery,CSS 2和AJAX(非Microsoft)。仅九个月之后,我感觉比与ASP.NET开发五年后相比,为进行Web开发项目做的准备要好得多。 ASP.NET实现使事情很难长期维护。 MVC使事情变得如此简单,因为您对快捷方式的依赖性降低。学习该框架需要花费一些时间,但是您对框架的了解越多,对框架的依赖就越少,而您越开始学习和理解已建立的标准(例如JavaScript和AJAX)。 对我来说,这是一个明确的选择。我将永远不会回到ASP.NET。如果我不能使用ASP.NET MVC,我将学习Ruby或PHP。我希望Web开发工具的进步和进步是受开发人员社区的需求驱动,而不是受利润驱动。 如果需要更新面板,建议您使用开源和精简版MagicAjax或ComfortASP。如果您需要框架有助于开发自定义Ajax,建议使用jQuery。 在设计站点时,我更喜欢的一大优点是DRY原则。 IMO ASP.NET MVC比Web表单干得多。 我最近已经从Webforms转向了MVC,我希望我再也不必回头了! ASP.NET MVC仍为"预览"格式,因此,在成熟之前我不会考虑它。您可以轻松滚动自己的MVP模式,而无需花费太多精力。 在Ajax方面,我想尝试找到可以满足您需求的库(商业库或其他库)。基础知识(网格,树,自动完成的文本框等)已经死了。不要重新发明轮子。 为了补充@ben \\的答案,我使用ASP.Net Webforms进行简单的数据绑定,并使用JQuery进行所有Ajax事务。老实说,由于它的简单性,我仍然不能放弃数据绑定。 Viewstate几乎没有用,所以我基本上将其关闭。虽然您可以使用MVC,但是请注意,将花费大多数时间来开发在Forms中视为理所当然的功能。祝你好运! 我的经验是使用php和ruby为Apache服务器编程Web应用程序。当我从事维护用asp.net(webforms)编写的Web应用程序的工作时,便开始学习Microsoft构建Web应用程序的方法。我不得不说我完全受了伤!我当时在想WTF是否会将所有这些ViewState垃圾发送回来?这有必要吗? 然后,我决定考虑用ajax和jquery做一些简单的事情,这些使我更新正在生成的面板和clientID,而不是我在视图中设置的内容。真浪费我的时间!为什么一页上不能有多个表格?为什么我不能只使用常规的ajax调用?为什么我的视图具有服务器逻辑?这些都是无法确保许多Web程序员面对asp.net Web表单的问题。然后,我发现了.NET MVC。我的生活变得轻松多了。 我习惯于使用Rails和CakePHP之类的MVC框架以编程方式创建Web应用程序。实际用于网络的技术。 我的建议是,将WebForms留给习惯于对winforms类型的应用程序进行编程的人员使用,因为它试图抽象出您正在Web上编程的事实。如果您想拥有真正的自由来开发对Web程序员真正有意义的Web应用程序,请使用.NET MVC或类似的东西,而不会妨碍您。 那是我的两分钱... MVC背后的概念很棒,但要准备好释放多年来使用的所有服务器控件的几乎所有功能。我只看了大约一个星期的MVC实现,但是页面生命周期和视图状态都消失了,所以这些控件不再正常运行。 我也惊呆了,找到了许多在标记中包含很多逻辑代码的示例。是的,aspx文件中的'if'和\\'foreach \\'语句是正确的-倒退了恕我直言。我很高兴将经典的asp抛在后面,但是在asp.net mvc模式的当前实现中,您可以回到标记中的代码,需要在所有地方使用辅助程序以及几乎没有任何可用的服务器控件。铅> 如果您现在开始一个新项目,我建议您坚持使用asp.net网络表单,并根据需要使用内置的asp.net ajax,工具包和jQuery。 asp.net ajax实现可能不是绝对最佳或最有效的实现,但是除非您在第一天获得一百万个唯一身份,或者您的服务器是vic 20,否则性能不会受到影响引人注意。 这当然取决于您的项目规模。如果您要启动一个期望获得数百万页面浏览量的5年企业级应用程序,UpdatePanel可能不会削减它,但是如果您正在构建一个普通的网站,抛出一个原型,或者只需要快速移动,asp .net ajax可以正常工作,并且学习曲线极低。 要清楚一点,每次进行ajax调用时,绝对不会返回整个页面。 / Only /需要更新的面板内容通过网络发送。任何http监视器都会证明这一点。是的,页面/ lifecycle /已执行,但是知道您可以构建相当有效的asp.net ajax应用程序。 使用ASP.NET Ajax的Webforms是天堂。这两个之间的集成令人惊叹,并且使用起来非常自然。 使用Webforms代替mvc将使您能够利用生命周期来开发非常好的和可重复使用的控件。 但是我仍然喜欢在混合中添加一些jQuery,以便遍历dom和添加动画,我只想使用asp.net ajax来实现与服务器端的集成。 距原始问题已有很长时间了。现在我们有了MVC3和.NET 4 与以前相比,MVC现在是否是更好的解决方案? 我同意asp.net ajax UpdatePanels不是理想的解决方案。 我们避免使用它们,而是一直使用客户端库与服务器进行任何通信。我喜欢我在PDC上看到的有关具有声明性组件和客户端模板的asp.net ajax 4.0中的功能的信息-非常好!将JQuery与现有库结合在一起可以提供很多功能-我质疑使用JQuery作为替代,因为它占用的空间小得多,并且能够执行与asp.net ajax客户端库相同的事情。 就服务器堆栈而言-我还没有使用过MVC,但是我们成功使用了通过Webforms自行开发的MVP方法。 我已经将asp.net winforms与ajax.net以及prototype / ext / jquery一起使用了。我想要考虑的是网站的目标。MVC是一种流行的模式。我无法针对ASP MVC讲任何话,因为我还没有机会使用它,但是我想确保您知道,如果您选择了Webforms,则不仅限于ajax.net。 |