El uso general de la devolución de llamada es relativamente simple. Basta con consultar directamente la ayuda y los ejemplos de msdn. Pero si realmente desea usarlo bien y con precisión, o desea desarrollar algunos componentes WEB basados en el mecanismo de devolución de llamada, primero debe tener una comprensión profunda del mecanismo de implementación de la devolución de llamada. En este artículo, Teddy trabajará con usted para analizar todo el mecanismo de invocación y retroalimentación de la devolución de llamada. Creo que será de cierta utilidad para ayudarlo a utilizar mejor la devolución de llamada.
Devolución de llamada vs Atlas
Primero, hablemos de Atlas. A muchos amigos les puede parecer extraño que ya exista una devolución de llamada, ¿por qué necesitamos lanzar Atlas nuevamente? Respecto a este tema no he investigado cómo lo explica el autor de Atlas. Pero desde mi experiencia personal en el uso de devolución de llamada y atlas, creo que la devolución de llamada como interfaz es muy similar a la devolución de datos, y debe permitir a los usuarios usarla de manera similar a la devolución de datos. Sin embargo, se debe decir que su mecanismo de devolución de datos no es particularmente conveniente de usar y no es fácil de expandir. Por supuesto, esto se compara con otras implementaciones del marco AJAX. Por lo tanto, Microsoft ha aprendido de muchas implementaciones AJAX existentes, como Prototype, Backbase y AJAX.NET, y las ha combinado con algunas de las funciones únicas de ASP.NET 2.0 para crear un marco AJAX que aprovecha las fortalezas de otros. Es difícil cuantificar qué tan bueno es desarrollar aplicaciones AJAX basadas en Atlas, pero definitivamente no es peor que otros marcos AJAX, además del backend de Microsoft y las aplicaciones de sitios de peso pesado como live.com Promoción, su impacto ciertamente vale la pena. esperando con ansias.
Sin embargo, esto no significa que la implementación de la devolución de llamada sea inútil. Como programadores, debemos tener la actitud correcta y utilizar la tecnología más correcta en el caso de uso correcto. Ningún marco es omnipotente y adecuado para cualquier entorno de uso; al igual que todos están debatiendo qué método de desarrollo de software es mejor, CMMi, RUP, XP, AGILE ~~, de hecho, no existe el mejor, el más adecuado es el más adecuado. Lo que más deberíamos hacer es comprender los principios, ventajas y desventajas de diversas soluciones, de modo que podamos utilizar racionalmente las herramientas adecuadas para resolver problemas prácticos.
Comience desde el script del cliente
Todos sabemos que en el nivel inferior, todo AJAX no tiene más que dos mecanismos de implementación: XMLHTTP e IFRAME. Antes de que la palabra AJAX ganara una atención generalizada, de hecho, los marcos funcionales basados en estas dos implementaciones subyacentes, o implementaciones de efectos sin actualización basadas en estas dos tecnologías, ya se usaban ampliamente. Por supuesto, con el desarrollo actual, en términos de uso de interfaces, el marco a menudo oculta los detalles de estos mecanismos subyacentes, y el uso de interfaces se ha vuelto cada vez más simple. Los usuarios solo necesitan llamar a estas interfaces simples y no es necesario saberlo. cómo lograr el efecto específico.
Sin embargo, dado que estamos aquí para analizar el mecanismo de implementación de devolución de llamada, comencemos con una llamada de script del cliente de devolución de llamada para ver cómo Microsoft implementa este mecanismo de devolución de llamada.
1. ClientScript.GetCallbackEventReference(...)
Para activar una devolución de llamada, primero, por supuesto, se debe emitir una llamada en el script del cliente. Una sintaxis de llamada típica es la siguiente:
<script language="javascript" type="text/javascript">
función any_script_function(arg, contexto)
{
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
}
</script>
ClientScript.GetCallbackEventReference(...) devolverá el script de devolución de llamada real de acuerdo con los parámetros pasados. Esta función tiene varias versiones sobrecargadas, por lo que puede consultar MSDN para conocer el significado de estos parámetros. Tome los parámetros específicos en el código de muestra anterior:
esto significa que el control del servidor que ejecuta la devolución de llamada es la página actual. La página actual debe implementar la interfaz ICallbackEventHandler, incluida la cadena GetCallbackResult() y void RaiseCallbackEvent(eventArgument). dos funciones de interfaz, este parámetro también puede ser una referencia a un control WEB. Por supuesto, este espacio también debe implementar la interfaz ICallbackEventHandler
- "arg" es el valor del parámetro eventArgument que se pasará a RaiseCallbackEvent, que permite a las personas Una cadena que define el formato;
- "ReceiveServerData" es el nombre de la función de script del cliente que procesa el contenido devuelto después de que la devolución de llamada sea exitosa. Esta función debe existir en la página donde se ejecuta la devolución de llamada y esta función puede contener dos parámetros. , por ejemplo:
<script type="text/javascript">
funciónReceiveServerData(resultado, contexto)
{}
</script>
Estos dos parámetros son el resultado de los datos devueltos por la devolución de llamada y el parámetro de contexto que se devuelve sin cambios cuando activamos la devolución de llamada. Por supuesto, estos dos parámetros son de tipo cadena.
- No es necesario explicar el "contexto". Sólo recuerde que este parámetro se pasará intacto a la función de procesamiento de datos de retorno especificada. La documentación oficial de MSDN dice que el contexto generalmente se puede usar para pasar código de script que debe llamarse en la función de procesamiento de datos de retorno del cliente, pero de hecho, puede pasar cualquier cosa, considérelo como una devolución de llamada desencadenante del cliente. al canal de transferencia de parámetros entre los segmentos receptores que procesan los datos devueltos.