asp.net callback updatepanel postback

Comunicación de cliente a servidor ASP.NET



callback updatepanel (2)

¿Puede ayudarme a entender todas las formas diferentes de comunicarse desde el navegador al cliente en ASP.NET? He convertido esta wiki en una comunidad, así que no dudes en editar mi publicación para mejorarla. Específicamente, estoy tratando de entender en qué escenario usar cada uno enumerando cómo funciona cada uno.

Estoy un poco confuso en UpdatePanel vs CallBack (con ViewState): Sé que UpdatePanel siempre devuelve HTML mientras que CallBack puede devolver JSON. ¿Alguna otra diferencia importante?

... y CallBack (sin ViewState) vs WebMethod. CallBack atraviesa la mayor parte del ciclo de vida de la página, WebMethod no. ¿Alguna otra diferencia importante?

IHttpHandler

  • Controlador personalizado para cualquier cosa (página, imagen, etc.)
    • Solo hace lo que le dices que haga ( procesamiento liviano del servidor, tráfico liviano )
    • Page es una implementación de IHttpHandler
    • Si no necesita lo que proporciona Page , cree un IHttpHandler personalizado
    • Si usa Page pero reemplaza a Render() y no genera HTML, probablemente pueda hacerlo con un IHttpHandler personalizado (por ejemplo, escribir datos binarios como imágenes)
  • Por defecto puede usar las extensiones de archivo .axd o .ashx, ambas son funcionalmente similares
    • .ashx no tiene puntos finales incorporados, por lo que es preferible por convención

Regular PostBack ( System.Web.UI.Page : IHttpHandler )

  • Página Hereda
    • Full PostBack, incluidos los valores de control ViewState y HTML ( tráfico pesado )
    • Ciclo de vida completo de la página ( procesamiento pesado del servidor )
  • No se requiere JavaScript
  • La página web parpadea / se desplaza porque todo se recarga en el navegador
  • Devuelve HTML de página completa ( tráfico pesado )

UpdatePanel ( System.Web.UI.Control )

  • Control dentro de la página
    • Full PostBack, incluidos los valores de control ViewState y HTML ( tráfico pesado )
    • Ciclo de vida completo de la página ( procesamiento pesado del servidor )
    • Controles fuera de UpdatePanel do Render (NullTextWriter)
  • Debe usar ScriptManager
    • Si no hay JavaScript del lado del cliente, puede recurrir a PostBack normal sin JavaScript (?)
  • Sin parpadeo / desplazamiento ya que es una llamada asíncrona, a menos que vuelva a la devolución de datos normal.
  • Se puede usar con páginas maestras y controles de usuario
  • Tiene soporte incorporado para la barra de progreso
  • Devuelve HTML para controles dentro de UpdatePanel ( tráfico medio )

Client CallBack ( Page , System.Web.UI.ICallbackEventHandler )

  • Página Hereda
    • La mayor parte del ciclo de vida de la página : no se debe crear árbol de renderización sino de control ( procesamiento pesado del servidor )
  • Toma solo los datos que especifique ( tráfico ligero ) y opcionalmente ViewState (?) ( Tráfico medio )
  • El cliente debe ser compatible con JavaScript y usar ScriptManager
  • Sin parpadeo / desplazamiento ya que es una llamada asincrónica
  • Se puede usar con páginas maestras y controles de usuario
  • Devuelve solo los datos que especifique en el formato que especifique (por ejemplo, JSON, XML ...) (?) ( Tráfico ligero )
  • Durante una devolución de llamada, la página debe agregar el control asociado en la misma ubicación en el árbol de control, de lo contrario, se produce una excepción.

WebMethod ( System.Web.Service.WebService )

  • Considerado tecnología heredada. Debería usar el servicio WCF en su lugar .
  • La clase implementa System.Web.Service.WebService
  • Toma solo los datos que especifique ( tráfico liviano )
  • El servidor solo ejecuta el método llamado ( procesamiento de servidor ligero )
  • El cliente debe ser compatible con JavaScript
  • Sin parpadeo / desplazamiento ya que es una llamada asincrónica
  • Se puede usar con páginas maestras y controles de usuario
  • Devuelve solo los datos que especifique, generalmente JSON ( tráfico ligero )
    • Puede crear una instancia de control de servidor para renderizar HTML y enviar de vuelta como una cadena, pero los eventos, la paginación en GridView, etc. no funcionará

PageMethods

Servicio WCF

¿Cualquier otro?


WebMethod se usa con los servicios web ASMX, que ahora Microsoft considera como "tecnología heredada". Los servicios de WCF deben usarse en su lugar. Admiten servicios SOAP sobre HTTP / HTTPS y basados ​​en REST o JSON, por lo que son mucho más flexibles.

Por esta razón, también recomiendo contra PageMethods , incluso si parecen ser convenientes.


Para ICallbackEventHandler

  1. ViewState siempre se envía al servidor en la solicitud de ajax, por lo que se puede leer y se puede volver a crear una instancia del estado de control, pero ViewState no se actualiza en el servidor ni se envía de vuelta al navegador en la respuesta ajax.
  2. Los valores de formulario se envían al servidor en la solicitud.