代码之家  ›  专栏  ›  技术社区  ›  Biswanath

回邮和回叫的区别

  •  118
  • Biswanath  · 技术社区  · 17 年前

    我不断地听到这些话 召回 以及 提交 “到处乱抛。
    两者之间有什么区别?

    回发是ASP特有的。NET页面?

    6 回复  |  直到 17 年前
        1
  •  207
  •   Glorfindel Doug L.    7 年前

    当页面上的数据(整个页面)从客户端发布到服务器时,就会发生回发。 数据被发布回服务器 ,因此页面被刷新(重绘)。..把它想象成' 向服务器发送充满数据的整个页面(asp.net) '.

    另一方面, 回调也是一种特殊的回发 ,但这只是快速往返服务器以获取一小部分数据(通常),因此与回发不同,页面不会刷新。..把它想象成' 呼叫服务器并接收 一些 数据返回 '.

    与Asp。网络, 调用回调时,ViewState不会刷新 与回发不同。

    为什么整个页面都是用ASP。网络是因为ASP。Net将整个页面封闭在一个 <form> 用一个 后方法 ,因此,当在页面中单击提交按钮时,表单将与表单中的所有字段一起发送到服务器……基本上是整个页面本身。

    如果您正在使用 纵火犯 (对于Firefox),您实际上可以在 Console 那样,你会看到什么 特定数据 正在发送到服务器( Request )还有服务器发回的数据( Response ).


    下图说明了ASP中回发和回调的页面生命周期。基于.NET的网站:

    ASP.NET Page Life Cycles
    (来源: esri.com )

        2
  •  19
  •   Sanket    17 年前

    当客户端向服务器发送与用户当前查看的页面相同的页面请求时,会发生回发。当回发发生时,整个页面都会刷新,您可以在浏览器底部的进度条上看到典型的进度。

    回调通常与AJAX一起使用,当客户端向服务器发送请求时,页面不会刷新,只更新了一部分,浏览器上不会出现任何闪烁,就会发生回调

        3
  •  6
  •   Stokely    9 年前

    很多讨论都是关于ASP的。NET通用语言。...

    答案是肯定的。Postback是微软ASP特有的“术语”。导航战鉴定小组 但请记住,像微软这样的供应商将这些流程的自己版本包装在他们自己的实现中,让我们对Http/Html世界中真正发生的事情感到困惑。

    他们的POSTBACK版本基本上是发送回发起服务器的传统HTTP POST请求。但在ASP中。NET,他们通过在整个网页周围粘贴一个巨大的FORM HTML元素标签(具有POST方法属性)来实现这一点,而不是在网页的一小部分粘贴传统的表单控件。他们这样做是因为他们使用HTTP规范来维护页面及其控件的“状态”,并确保整个页面,甚至是传统的非表单字段标记,都能完好无损地返回。

    不幸的是,这会通过电线发送大量不必要的数据,因此他们的VIEWSTATE及其页面中的姊妹POSTBACK被许多人视为浪费带宽和实现网页状态的草率方式。我可以向您展示,大多数现代浏览器和网站,如果使用可缓存的CSS和一致的HTML标记进行设计,将使用浏览器原生HTML缓存非常自然地返回页面状态。(满额邮戳通常是不必要的。

    CALLBACK只是JavaScript。这只是ECMASCRIPT马戏团技巧ASP。NET存储在他们称之为AJAX API的巨大JavaScript库中,浏览器从服务器下载。NET开发人员在不知情的情况下将内容打包到他们的网页中,以在没有完整POSTBACK的情况下触发网页中的更改。ASP。NET API for AJAX只是在客户端创建了所有这些巨大的Javascript,当用户在浏览器中更改、滚动或单击某些内容时,浏览器会触发这些Javascript,从而触发传统的Javascript浏览器DOM事件,然后将大量JSON或其他数据发送回服务器进行处理。然后,它会被浏览器内存中的Java库和对象返回并接受,并更改用户网页和标记的部分内容。

    该公司表示,约有5-10%的用户和浏览器禁用了Javascript,因此所有这些JSON和AJAX都会崩溃并烧毁。(回拨不起作用。

    这就是幕后发生的事情。如果你问我,其中大部分都是矫枉过正的。这就是为什么Web控件在ASP中建模的原因。NET在过去一直受到批评。

    如果你放弃了ASP。NET中的一秒钟,你可以在一个HTML网页中自己编写一个简单的FORM字段,有一个文本框和按钮,然后按下它,看着它发布到服务器上,就像ASP一样。NET页面可以,但更快更简单。这就是真正的POST。浏览器自然会向服务器发送必要的POST HTTP头,但会将HTML缓存在页面的其余部分,因此它自己的渲染速度非常快。

    对于CALLBACK,你可以在同一个HTML页面上添加一个简单的Javascript/ECMAScript代码,当用户滚动某些文本或按钮、点击或更改表单字段时,网页不会POST,但在幕后,你让Javascript向服务器发送一些东西。如何通过自己的JavaScript、JSON或库来处理这一点是另一回事。但这不是魔法。对于没有禁用Javascipt或Javascript的人,您应该设计没有回调的页面,只缓存单击表单字段控件或超链接时返回的任何更改。这是重新考虑回调例程的一个原因,尽管现在大多数现代用户代理都是为ECMAScripted网站例程设置的。

    这就是人们困惑的地方。……这些供应商对非常基本的HTTP请求和Javascript技巧的实现被分层为不清楚的语言。然后,它会导致人们构建可怕的web应用程序,这些应用程序会做所有这些简单编码就能解决的不必要的事情。

    我仍然使用并推荐ASP。网。它走了很长的路,是一个伟大的系统。但如果更多的人在使用这些框架之前了解他们所做的基本工作,这将有所帮助,因为如果你看到幕后到底发生了什么,这些框架可以进行定制和简化,以改进它们。

        4
  •  5
  •   Kevin Le - Khnle    17 年前

    我同意Dreas的回答,但我想补充几点。Postback是ASP最近引入的一个术语。正如Dreas所解释的那样,NET编程,而回调更通用,在web开发出现之前就已经被使用了。事实上,我第一次听说回调是在我开始用C编程的时候(也许这个词在那之前就存在了,我不知道),它只是指一个指向函数的指针,这个指向函数(命名为a)的指针被传递给另一个函数(名为B),后者稍后将调用a。回调最近也被 Yahoo UI Connection Manager 以及其他Ajax框架,但我相信这个术语在旧的C时代就有了第一次使用。

        5
  •  0
  •   Andreas Grech    16 年前

    当向服务器发送请求时,会发生回发,无需为每个请求提供有关安全性的详细信息。

    当您请求其他页面时,服务器会使用回调

        6
  •  0
  •   rohit    14 年前

    回发也是一次往返,基本上是在执行回发时调用称为往返的特殊方法。.Postback位于服务器端,而as往返位于客户端sid上。

    推荐文章