什么是部分回发?
我是一位经验丰富的 Web 开发人员,涉足多个不同的 Web 技术堆栈。 我目前在 .Net 工作,我对部分回发感到好奇。
我了解部分回发的功能是什么以及如何以编程方式使用它,但我不喜欢使用我不理解的技术,部分回发是如何实现的。
我了解 HTTP 请求和异步请求,但让我对部分回发感到困扰的是,它似乎两者兼而有之。
也许我只是错过了一些东西,但在我看来,部分请求同时执行了这两件事,首先触发异步 POST 请求,但浏览器似乎意识到了,并且活动指示器开始旋转,这通常只发生在 HTTP 请求页面期间使成为。
那么谁能解释一下 Microsoft 如何在 HTTP 请求级别实现部分回发呢?
I'm an experienced web developer in several different web technology stacks. I currently work in .Net and I've become curious about the Partial Postback.
I understand what the Partial Postback's function is and how to work with it programatically, but I don't like using technology that I don't understand, how is a Partial Postback implemented.
I understand HTTP Requests and Asynchronous Requests, the thing that bugs me about the Partial Postback is that it seems to be both.
Maybe I'm just missing something but it appears to me that the Partial Request does both, first firing off an Asynchronous POST Request but the Browser seems to be aware and the activity indicator starts to spin, which normally only occurs during an HTTP Request Page Render.
So can anyone shed some light on how Microsoft implemented, at the HTTP Request level, the Partial Postback?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
来自如何在 ASP.NET 2.0 中编写自己的部分回发:
UpdatePanel 不仅刷新其包含的控件,还在处理后用从服务器获取的值更新 ViewState 值。
From How to write your own partial postback in ASP.NET 2.0:
An UpdatePanel not only refreshes the controls which it contains, it also updates the ViewState value with the one obtained from the server, after processing.
我知道这个问题已经得到解答,但我不同意这个答案...
以我的拙见,上述文章中滥用了术语“部分回发”“如何在 ASP.NET 2.0 中编写自己的部分回发”。 在本文中,作者向您展示了如何对 HttpHandler 进行 AJAX 调用。 这是一个与在 ASP.NET 中进行 PartialPostback 调用非常不同的过程。
我相信(上述答案)事后评论中回避了这种“差异”,其中指出:
“An UpdatePanel不仅刷新它包含的控件,它还在处理后用从服务器获取的值更新 ViewState 值。”
虽然最后的注释有点难以捉摸地说明了使用 ASP 的“部分回发”的定义.NET UpdatePanel...它没有解释什么是部分回发(这又是一个与普通 AJAX 调用非常不同的过程)。
详细说明...
使用 UpdatePanel 的 MICROSOFT ASP.NET AJAX:
在基本层面上,Microsoft AJAX 通过部分页面回发支持异步请求。 部分回发与同步全页回发一样迭代相同的页面生命周期,但仅刷新页面上的特定区域或控件 - 从而实现部分页面呈现。 MICROSOFT ASP.NET AJAX 依赖于拦截器模式来生成和处理部分回发。 初始化时,MICROSOFT ASP.NET AJAX JavaScript 库添加一组客户端事件处理程序来拦截通常会启动整页回发的调用。 处理函数拦截来自已注册控件的回发调用,生成部分回发,处理响应内容,然后异步更新页面内容。 由于 MICROSOFT ASP.NET AJAX 是基于现有 ASP.NET 回发架构构建的,因此它利用事件验证并在整个部分回发过程中维护视图状态。 标准的“正常”AJAX 调用不会执行这些操作!
简而言之...
MICROSOFT ASP.NET AJAX 使用“正常”AJAX 来“ajax-ify” ' 它是页面并实现部分更新......这样做时,它会进行交易 & 在一次调用中多次管理视图状态。 这就是为什么它被称为“部分回发”。 随后,这也是为什么他们最初将 UpdatePanel 描述为使页面“ajaxy”的一种方法(因为它与使用 AJAX 不同)。
普通 AJAX 调用:
在浏览器中使用 JavaScript 发起的异步请求会创建与服务器的新连接。 是的...这可能包括对页面的有状态回发,但也包括对当前页面之外的资源的无状态请求。 但是,在异步回发的情况下,只有服务器上当前页面需要处理的信息会被传递到请求中(并且您可以控制这一点)。意思是,整个页面不需要提交,不需要管理视图状态 嵌入到页面生命周期中的(本机)开销可以被绕过。 同时,异步回发仅调用与处理当前请求相关的服务器事件。 这就是为什么普通 AJAX 比部分回发快得多!
这些要点说明...
不仅什么是“部分回发”...而且为什么有“部分回发”和“ajax”调用之间的区别。 这就是为什么这是一个更好的答案。
I know this question has already been answered, but I disagree with the answer...
In my humble opinion, the term 'partial postback' is being misused in the above-mentioned article "How to write your own partial postback in ASP.NET 2.0". In this article, the author shows you how to make an AJAX call to an HttpHandler. This is a very different process than making PartialPostback calls in ASP.NET.
I beleive this 'difference' is eluded to in the (above answers) after-thought comment which states:
"An UpdatePanel not only refreshes the controls which it contains, it also updates the ViewState value with the one obtained from the server, after processing."
While this final comment somewhat elusively-illustrates the definition of a 'Partial Postback' using an ASP.NET UpdatePanel...it doesn't explain what a partial-postback is (which, once again, is a very different process than that of a normal AJAX call).
To elaborate...
MICROSOFT ASP.NET AJAX Using UpdatePanel's:
At a basic level, Microsoft AJAX supports asynchronous requests via a partial-page-postback. Partial postbacks iterate through the same page lifecycle as a synchronous full page postback, but only specific regions or controls on the page are refreshed - thus achieving partial page rendering. MICROSOFT ASP.NET AJAX is dependent on the interceptor pattern to generate and handle a partial-postback. Upon initialization, MICROSOFT ASP.NET AJAX JavaScript libraries add a set of client event handlers to intercept calls that would normally initiate a full page postback. The handler functions intercept postback calls from registered controls, generate a partial postback, process the response content and then update page content asynchronously. Since MICROSOFT ASP.NET AJAX is built on the existing ASP.NET postback architecture it utilizes event-validation and maintains the view state throughout the partial-postback process. Your standard 'normal' AJAX call doesn't do these things!
To put it shortly...
MICROSOFT ASP.NET AJAX uses 'normal' AJAX to 'ajax-ify' it's pages and achieve partial-updates...and in doing so, it trades & manages view-state MULTIPLE times throughout a single call. This is WHY it is called a 'partial-postback'. Subsequently, this is also why they originally described the UpdatePanel as a means to make your pages 'ajaxy' (because it is not the same thing as using AJAX).
NORMAL AJAX Calls:
Asynchronous requests initiated using JavaScript in the browser creates a new connection to a server. Yes...this may include stateful postbacks to a page, but also stateless requests to resources apart from the current page. However, in the case of an asynchronous postback , only the information that needs to be processed by the current page on the server is passed INTO the request (and you can control this). Meaning, the contents of the entire page do not need to be submitted, no view-state needs to be managed & the (native) overhead embedded into the page-lifecycle can be bypassed. Meanwhile, an asynchronous postback only calls server-events associated with processing the CURRENT REQUEST. This is why normal AJAX is so much faster than PARTIAL POSTBACKS!
These Points Illustrate...
Not only WHAT a 'partial postback' is...but WHY there is a difference between a 'partial postback' and an 'ajax' call. Which is why this is a better answer.
看一下:
http://www.codeproject.com/KB/aspnet/PartialPostback .aspx
Take a look at:
http://www.codeproject.com/KB/aspnet/PartialPostback.aspx