Diferencia entre una devolución de datos y una devolución de llamada

116

Sigo escuchando estas palabras ' devolución de llamada ' y ' devolución de datos '.
¿Cuál es la diferencia entre dos?

¿La devolución de datos es muy específica para las páginas ASP.NET?

Biswanath
fuente

Respuestas:

204

Una devolución de datos ocurre cuando los datos (toda la página) en la página se publican desde el cliente al servidor ... es decir, los datos se devuelven al servidor y, por lo tanto, la página se actualiza (vuelve a dibujar) ... piense en ello como ' enviar al servidor toda la página (asp.net) llena de datos '.

Por otro lado, una devolución de llamada también es un tipo especial de devolución de datos , pero es solo un viaje rápido de ida y vuelta al servidor para obtener un pequeño conjunto de datos (normalmente) y, por lo tanto, la página no se actualiza, a diferencia de la devolución de datos. ... piense en ello como ' llamar al servidor y recibir algunos datos '.

Con Asp.Net, ViewState no se actualiza cuando se invoca una devolución de llamada , a diferencia de lo que ocurre con una devolución de datos.

La razón de que toda la página se publica con ASP.Net se debe a ASP.Net encierra toda la página en una <form>con un método post , así que cuando un botón de envío se hace clic en la página, el formulario se envía al servidor con todos los campos que están en el formulario ... básicamente toda la página en sí.

Si está utilizando FireBug (para Firefox), puede ver las devoluciones de llamada que se invocan al servidor en el archivo Console. De esa manera, verá qué datos específicos se están enviando al servidor ( Request) y también los datos que el servidor le envió ( Response).


La siguiente imagen ilustra los ciclos de vida de la página de una devolución de datos y una devolución de llamada en un sitio web basado en ASP.NET:

Ciclos de vida de la página ASP.NET
(fuente: esri.com )

Andreas Grech
fuente
18
En realidad, una devolución de llamada es un término de programación más general para una función que debe ejecutarse después de que se haya completado otra función.
Ryan Doherty
1
Es cuando un puntero a una función se pasa a otra función, que luego invocará
Andreas Grech
18

Una devolución de datos ocurre cuando se envía una solicitud del cliente al servidor para la misma página que el usuario está viendo actualmente. Cuando se produce una devolución de datos, se actualiza toda la página y puede ver la progresión típica en la barra de progreso en la parte inferior del navegador.

Una devolución de llamada, generalmente utilizada con AJAX, ocurre cuando se envía una solicitud desde el cliente al servidor para la cual la página no se actualiza, solo una parte de ella se actualiza sin que se produzca ningún parpadeo en el navegador.

Sanket
fuente
5

Estoy de acuerdo con la respuesta de Dreas, pero me gustaría agregar un par de puntos. La devolución de datos es un término que se introdujo muy recientemente en la programación ASP .NET, como explicó Dreas, mientras que la devolución de llamada es más genérico y se ha utilizado mucho antes de que existiera el desarrollo web. De hecho, escuché por primera vez sobre la devolución de llamada en los días en que comencé a programar en C (tal vez el término existía antes de eso, no lo sé) y simplemente significa un puntero para funcionar y este puntero a una función (nombre esto A) se pasa a otra función (nombre esto B) que luego invocará A. La devolución de llamada también se usa recientemente en Yahoo UI Connection Manager y otros marcos Ajax, pero creo que el término tuvo su primer uso en los viejos días de C.

Kevin Le - Khnle
fuente
4

Gran parte de esta discusión es lenguaje de palabrería ASP.NET ...

La respuesta es sí. Postback es un "término" específico de ASP.NET de Microsoft. Pero recuerde, los proveedores como Microsoft envuelven sus PROPIAS versiones de estos procesos alrededor de sus propias implementaciones, confundiéndonos a todos en cuanto a lo que REALMENTE SUCEDE en el mundo Http / Html.

Su versión de POSTBACK es básicamente una solicitud POST HTTP tradicional que se envía al servidor de origen. Pero en ASP.NET lo hacen pegando una etiqueta de elemento HTML FORM gigante (con el atributo de método POST) alrededor de toda la página web en lugar de los controles de formulario tradicionales en una pequeña parte de una página web. Lo hacen porque están usando la especificación HTTP para mantener el "estado" de su página y sus controles, y para asegurarse de que toda la página, incluso el marcado de campo tradicional sin formulario, vuelva intacta.

Desafortunadamente, esto envía una ENORME cantidad de datos innecesarios a través del cable, de modo que su VIEWSTATE y su POSTBACK hermano en la página han llegado a ser vistos por muchos como una pérdida de ancho de banda y una forma descuidada de implementar el estado de la página web. Puedo mostrarle que la mayoría de los navegadores y sitios web modernos, si se diseñan con CSS almacenable en caché y marcado HTML coherente, devolverán el estado de la página de forma bastante natural utilizando el caché HTML nativo del navegador. es decir, la POSTBACK completa a menudo es innecesaria.

CALLBACK es solo JavaScript. Es solo un circo ECMASCRIPT que engaña a ASP.NET almacena en lo que ellos llaman su API AJAX en bibliotecas gigantes de JavaScript que su navegador descarga desde el servidor, y que los desarrolladores ASP.NET sin saberlo empaquetan en sus páginas web para activar cambios en una página web sin POSTBACK completo. La API ASP.NET para AJAX simplemente crea todo este Javascript masivo que está en el lado del cliente y que se activa en el navegador cuando el usuario cambia algo, pasa sobre algo o hace clic en algo en el navegador que activa los eventos DOM del navegador JavaScript tradicional, lo que luego envía una carga gigante de JSON u otros datos al servidor para su procesamiento. Eso luego es devuelto y aceptado por las bibliotecas y objetos de Javascipted en la memoria en el navegador, y cambia partes de la página web y el marcado de los usuarios.

Se dice que alrededor del 5-10% de los usuarios y navegadores tienen Javascript desactivado, por lo que todo este JSON y AJAX se bloqueará y se quemará para esas personas. es decir, CALLBACK no funcionaría.

Eso es lo que sucede detrás de escena. Gran parte es exagerado, si me preguntas. Y es por eso que los modelos de Web Control en ASP.NET han sido criticados en el pasado.

Si abandonó ASP.NET por un segundo, podría escribir un campo FORM simple usted mismo en una página web HTML con un solo cuadro de texto y un botón y presionarlo y ver cómo se publica en el servidor, exactamente como lo haría una página ASP.NET pero más rápido y más sencillo. Eso es lo que es POSTBACK real. El navegador envía naturalmente al servidor el Encabezado HTTP POST necesario para hacerlo, pero almacena en caché el HTML en el resto de la página, por lo que se procesa a la velocidad del rayo por sí solo.

Para CALLBACK, puede simplemente agregar un código simple Javascript / ECMAScript a esa misma página HTML donde, cuando el usuario pasa por encima de algún texto o botón, hace clic o cambia un campo de formulario, la página web no POST, pero detrás de escena usted hacer que Javascript envíe algo al servidor. Cómo maneja eso a través de su propio JavaScript, JSON o bibliotecas es otro asunto. Pero no es magia. Para las personas sin Javascipt o Javascript deshabilitado, debe diseñar páginas sin CALLBACK y simplemente almacenar en caché cualquier cambio que regrese cuando se hace clic en los controles de campo de formulario o hipervínculos. Es una razón para reconsiderar las rutinas de devolución de llamada, aunque la mayoría de los agentes de usuario modernos ahora están configurados para las rutinas de sitios web con script ECMAS.

Eso es lo que confunde a la gente ... estas implementaciones de proveedores de solicitudes HTTP muy básicas y trucos con JavaScript se superponen en un lenguaje que no está claro. Luego, hace que la gente cree aplicaciones web monstruosas que hacen todas estas cosas innecesarias que una codificación muy simple resolvería.

Sigo usando y recomiendo ASP.NET. Ha recorrido un largo camino y es un gran sistema. Pero ayudaría si más personas entendieran los conceptos básicos de lo que hacen antes de usarlos, ya que estos marcos se pueden personalizar y simplificar un poco para mejorarlos si ves lo que realmente está sucediendo bajo el capó.

Stokely
fuente
0

Una devolución de datos se produce cuando se envía una solicitud a un servidor sin necesidad de proporcionar detalles sobre la seguridad de cada solicitud.

Cuando haces una solicitud para que el servidor utilice la devolución de llamada de la otra página

Andreas Grech
fuente
0

Una devolución de datos también es un viaje de ida y vuelta, básicamente cuando se ejecuta una devolución de datos en ese momento, llama al método especial que se conoce como viaje de ida y vuelta. La devolución de datos está en el lado del servidor, mientras que el viaje de ida y vuelta está en el sid del cliente.

rohit
fuente