asp.net - route - select asp-for asp-items
Diferencia entre una devoluciĆ³n de datos y una devoluciĆ³n de llamada (7)
Estoy de acuerdo con la respuesta de Dreas, pero me gustaría agregar un par de puntos. El postback es un término que se introdujo recientemente por la programación ASP .NET como explicó Dreas, mientras que la devolución de llamada es más genérica y se ha utilizado mucho antes de que exista el desarrollo web. De hecho, escuché por primera vez acerca de 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 sé) y simplemente significa un puntero a la función y este puntero a una función (nómbrelo A) pasa a otra función (nombre este B) que posteriormente invocará A. La devolución de llamada también fue utilizada recientemente por Yahoo UI Connection Manager y otros marcos Ajax, pero creo que el término tuvo su primer uso en los viejos C días.
Sigo escuchando estas palabras '' callback '' y '' postback ''.
¿Cuál es la diferencia entre dos?
¿La devolución de datos es muy específica de las páginas ASP.NET?
Una devolución de datos se produce cuando los datos (toda la página) en la página se publican del cliente al servidor ... si los datos se publican de nuevo en el servidor y, por lo tanto, la página se actualiza (vuelve a dibujar) ... piénselo 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 de ida y vuelta rápido al servidor para obtener un pequeño conjunto de datos (normalmente), y así 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 una devolución de datos.
La razón por la que toda la página se publica con ASP.Net es porque ASP.Net incluye toda la página en un <form>
con un método de publicación , por lo que cuando se hace clic en un botón de enviar en la página, el formulario se envía al servidor con todos los campos que están en la forma ... básicamente toda la página en sí.
Si está utilizando FireBug (para Firefox), en realidad puede ver las devoluciones de llamada que se invoca al servidor en la Console
. De esta forma, verá qué datos específicos se envían al servidor ( Request
) y también los datos que el servidor le envió ( Response
).
La imagen de abajo 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:
Una devolución de datos se produce cuando se envía una solicitud a un servidor sin necesidad de dar detalles sobre la seguridad de cada solicitud.
Cuando realiza una solicitud para la otra página, el servidor utiliza la devolución de llamada
Una devolución de datos se produce cuando se envía una solicitud del cliente al servidor para la misma página que la que el usuario está viendo actualmente. Cuando se produce una devolución de datos, se actualiza toda la página y se 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 del cliente al servidor para el cual la página no se actualiza, solo una parte de ella se actualiza sin que se produzca ningún parpadeo en el navegador.
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 ida y vuelta. La devolución se realiza en el lado del servidor donde el viaje de ida y vuelta se realiza en el sid del cliente.
Una gran parte de esta discusión es ASP.NET gobbledygook language ....
La respuesta es sí. El postback es un "término" específico para ASP.NET de Microsoft. Pero recuerde, los proveedores como Microsoft envuelven sus propias versiones de estos procesos con sus propias implementaciones, confundiéndonos a todos sobre lo que REALMENTE SUCEDE en el mundo Http / Html.
Su versión de POSTBACK es básicamente una solicitud HTTP POST tradicional devuelta al servidor de origen. Pero en ASP.NET lo hacen pegando una gigantesca etiqueta de elemento FORM HTML (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. Hacen esto 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 la marca de campo tradicional sin formato, vuelva intacta.
Desafortunadamente, esto envía una gran 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 un desperdicio de ancho de banda y una manera descuidada de implementar el estado de la página web. Puedo mostrarles que la mayoría de los navegadores modernos y el sitio web, si están diseñados con CSS cacheable y marcado consistente de HTML, devolverán el estado de la página de forma bastante natural utilizando el caché HTML nativo de los navegadores. es decir, POSTBACK completo a menudo es innecesario.
CALLBACK es solo JavaScript. Su circo simplemente ECMASCRIPT engaña a las tiendas ASP.NET en lo que llaman su API AJAX en gigantescas bibliotecas de JavaScript que su navegador descarga desde el servidor y que los desarrolladores de ASP.NET empaquetan sin saberlo en sus páginas web para activar cambios en una página web sin POSTBACK completo. La API ASP.NET para AJAX solo crea todo este Javascript masivo que está en el lado del cliente y que se activa en el navegador cuando el usuario cambia algo, gira sobre algo o hace clic en algo en el navegador activando los eventos DOM del navegador JavaScript tradicional, 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 del usuario.
Se dice que alrededor del 5-10% de los usuarios y navegadores tienen JavaScript deshabilitado, por lo que todo este JSON y AJAX se bloquearían y se grabarían para esas personas. es decir, CALLBACK no funcionaría.
Eso es lo que sucede detrás de escena. Mucho de eso es excesivo, si me preguntas. Y es por eso que los modelos de Control Web en ASP.NET han sido criticados en el pasado.
Si abandona ASP.NET por un segundo, puede escribir un campo FORMATO simple usted mismo en una página web HTML con un solo cuadro de texto y un botón y presionarlo y mirarlo publicar en el servidor, exactamente como lo haría una página ASP.NET, pero más rápido y más simple. Eso es lo que es POSTBACK real. El navegador envía naturalmente al servidor el encabezado POST HTTP necesario para hacerlo, pero almacena en caché el HTML en el resto de la página, por lo que hace que el rayo sea rápido por sí mismo.
Para CALLBACK, puede agregar un código JavaScript / ECMAScript simple a la misma página HTML donde, cuando el usuario despliega un texto o botón, hace clic o cambia un campo de formulario, la página web no se PUBLICA, pero detrás de las escenas usted tiene Javascript enviar algo al servidor. Cómo manejas eso a través de tu propio JavaScript, JSON o bibliotecas es otro trato. Pero no es magia. Para las personas que no tienen Javascipt o Javascript deshabilitado, debe diseñar páginas sin CALLBACK y simplemente almacenar en caché los cambios que se produzcan cuando se haga clic en los controles del campo de formulario o en los hipervínculos. Es una de las razones 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 del sitio web ECMAScripted.
Eso es lo que confunde a la gente ... estas implementaciones de proveedores de solicitudes HTTP muy básicas y los trucos Javascripted se acoplan en un lenguaje que no es claro. Luego hace que las personas construyan aplicaciones web monstruosas que hacen todas estas cosas innecesarias que una codificación muy simple resolvería.
Todavía uso y recomiendo ASP.NET. Ha recorrido un largo camino y 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 sucede bajo el capó.
Una devolución de datos es una solicitud enviada desde un cliente al servidor desde la misma página, con la que el usuario ya está trabajando ".
ASP.NET se introdujo con un mecanismo para publicar una solicitud HTTP POST en la misma página. Básicamente, está publicando una página completa en el servidor (es decir, enviando todos sus datos) en la misma página. Entonces, toda la página se actualiza.
Para comprender cómo funciona este mecanismo de devolución de datos en ASP.NET, siga estos sencillos pasos:
1.Añada una nueva página de formulario web ASP.NET a un proyecto, por ejemplo, WebForm1.aspx.
2. Vea el código de la página en la vista de fuente HTML. Encontrará algo así como la siguiente pantalla: mire la línea de código de formulario.
<form id="form1" runat="server">
Representa una implementación del lado del servidor del control de formulario.
Ahora solo ejecute la aplicación para ver la página WebForm1.aspx y ver su código fuente. La fuente HTML de la página mostrará el elemento del formulario de la siguiente manera:
<form method="post" action="WebForm1.aspx" id="form1">
Puede ver que un elemento de formulario HTML generado con un método HTTP como "POST" y action = "WebForm1.aspx". Por lo tanto, si se hace clic en un botón de enviar, la página se devolverá automáticamente por defecto.
Una devolución de llamada generalmente es una llamada a la ejecución de una función después de que se haya completado otra función ".
Pero si tratamos de diferenciarlo de una devolución de datos , entonces podemos decir: es una llamada hecha al servidor para recibir datos específicos en lugar de actualizar la página entera como una devolución de datos. En ASP.NET, se logra utilizando AJAX, que hace una llamada al servidor y actualiza una parte de la página con datos específicos recibidos.