【问题标题】:How does an UpdatePanel differ from 'traditional' AJAX?UpdatePanel 与“传统”AJAX 有何不同?
【发布时间】:2009-08-31 01:53:33
【问题描述】:

我的朋友向我提到,由于我只在我的 asp.net 站点上使用更新面板,我真的没有真正使用直接 AJAX 功能。他在说什么?

【问题讨论】:

  • UpdatePanel 是一种非常生硬的工具 - 就像使用大锤来解决问题一样。使用需要手术精度的非常精细的应用程序的人并不总是理解大锤仍然是一种合法的工具(另一方面,许多无知的开发人员最终在他们应该使用 scapel 时使用了大锤!)

标签: asp.net ajax updatepanel


【解决方案1】:

严格的 AJAX 意味着使用异步 Javascript(使用 JS XmlHttpRequest 对象)和 XML(或 JSON)。这意味着对您的服务器或其他服务进行非常轻量级的回调,获取结果,并在客户端以某种方式处理它们。双方(请求和响应处理)都需要编写Javascript。

ASP.NET UpdatePanel 会执行此操作,但会对您“隐藏”所有详细信息。也就是说,它们的数据传输负载“看起来”像标准形式的 POST,并且返回的数据实际上是一个 HTML 块,实际上是插入/替换到当前页面中的。

这使得服务器上的调用“更重”(因为必须完成整个页面生命周期)和带宽使用。 ASP.NET MVC 等较新的技术不需要/使用 UpdatePanel,并且可以使用轻量级 JSON 服务来返回数据,但您必须编写 Javascript 以在客户端“处理”(以某种方式将其绑定到 UI)。

【讨论】:

  • 如果我有一个 ajax 更新面板网站并且我想使用更底层的代码来处理这个问题,那么最好的例子是什么。
  • 我认为这个 SO 问题可以帮助你 - stackoverflow.com/questions/415711/…
【解决方案2】:

UpdatePanels 正在使用 ajax,但您对它的实际工作方式太抽象了。

当您使用 UpdatePanels 时,ajax 是“免费的”——虽然这对于小型应用程序来说很酷,但当您使用具有大量 UpdatePanels 的大型应用程序时,它们会falldown。当这种情况发生时,我敢猜测 大多数 asp.net 开发人员不知道从哪里开始,因为底层技术对他们来说是隐藏的。

让你的朋友开心,告诉他你开始使用 jQuery ;)

【讨论】:

    【解决方案3】:

    他可能会说 UpdatePanel 接收到的数据比您预期的要多得多。这个网站给出了一些很好的例子:Why ASP.NET AJAX UpdatePanels are dangerous。这是来自同一站点的另一个页面,它在Are you making these 3 common ASP.NET AJAX mistakes? 上提供了一些很好的指示。

    【讨论】:

      【解决方案4】:

      严格来说,我不得不同意 UpdatePanel 实际上是 AJAX。

      大多数人认为 AJAX 比 UpdatePanel 更精简。网页上的许多 ajax 功能涉及执行一些非常具体的活动 - 使用客户端 HTTP 请求来处理服务器上的一些信息,获取响应,然后根据响应更新页面上的某些内容。

      UpdatePanel 的操作方式大致相同,但在更宏观的层面上。 UpdatePanel 包含基本上将表单或表单元素发布回页面的代码,这样从服务器端它是透明的,您可以像不使用 UpdatePanel 的方式一样处理和处理回发事件。

      然后,与 UpdatePanel 关联的 JavaScript 库仅刷新包含在更新面板中的页面部分。

      与 UpdatePanel 捆绑在一起的 JavaScript 确实使用 http 请求来发布数据并接收 Xml 作为响应 - 这也是异步的。所以,它是AJAX。细节只是对你隐藏。仅仅因为您没有直接操作请求并处理响应并不意味着它不是 AJAX。然而,与许多人认为的典型 AJAX 实现相比,UpdatePanel 的流量/负载要重一些。

      【讨论】:

        【解决方案5】:

        我不知道。

        通过使用更新面板,.net ajax 在后台请求该页面的内容并将其放入面板中。这是一个相当经典的“ajax”实现。

        他可能指的是使用 ajax 调用发布数据,ajax 面板也涵盖了这一点,但与使用 jQuery 的方式不同。

        【讨论】:

          【解决方案6】:

          也许他对您拥有非常出色的跨浏览器 AJAX 功能而不必遭受一千次 JavaScript 剪纸感到不安。

          【讨论】:

            【解决方案7】:

            更新面板是 AJAX 扩展,如果这是您所要求的。 ASP.NET says so!

            【讨论】:

              【解决方案8】:

              也许他希望你充分使用 AJAX 控件工具包 - 即实现 DragPanel、HTMLEditor、日历、动画、手风琴等。

              如果是这样,请以友好的方式向他展示中指手势:)

              【讨论】:

                【解决方案9】:

                他可能指的是client-side library for ASP.NET AJAX,它可以让您直接访问驱动更新面板的 AJAX。

                他的错误在于更新面板不依赖于核心 ajax 技术——它们确实如此。他可能是正确的,因为在更新面板允许的情况下,您可以使用 AJAX 做更多事情。

                【讨论】:

                  【解决方案10】:

                  这听起来可能有点主观,但我对 UpdatePanel 有一些非常好的体验和一些非常糟糕的体验(是的,UpdatePanel 是真正的 AJAX)。

                  好: UpdatePanel 可以轻松地将 AJAX 功能改装到现有网页中,而无需进行大量重写。

                  错误: UpdatePanel 回发所有页面数据。因此,我看到了严重的性能问题。如果传统的 ASP.Net 页面具有足够大小的视图状态数据,那么 UpdatePanel 将无法正常运行。这种在服务器上可用的视图状态数据很方便,但在用户数量和大型数据集方面都不能很好地扩展。

                  就像程序员可以使用的许多工具一样,UpdatePanel 既不好也不坏。这取决于使用情况。

                  【讨论】:

                    猜你喜欢
                    • 2010-09-06
                    • 1970-01-01
                    • 2023-03-24
                    • 2019-09-28
                    • 1970-01-01
                    • 2011-04-04
                    • 2012-05-04
                    • 2010-11-28
                    • 2018-10-19
                    相关资源
                    最近更新 更多