MessageBox en ASP.net. Porque no me funciona?

Esta es una de las preguntas que se ven mas a diario en los foros y grupos de noticias.

Porque no me funciona el MessageBox en ASP.net, si en una aplicación Windows si lo hace?

Este es un error de concepto en el que se puede caer fácilmente, mas, cuando se trabaja con un IDE como Visual Studio .Net 2003/2005, donde presenta una interfaz "similar" para desarrollar aplicaciones Webs, como aplicaciones Windows.

El problema esta en que debemos entender, antes de desarrollar una aplicación Web (por mas que el IDE sea muy poderoso, y el lenguaje de prestaciones extras), como funcionan las paginas Webs con contenido dinámico.

Entonces, pensemos en el funcionamiento de la web como si fueran dos personas, a las cuales la divide una pared. Una persona (el servidor), posee una cesta, y recursos (pueden ser frutas🙂 ), de su lado. Del otro lado, la otra persona (el cliente), requiere de esos recursos que el servidor puede enviarles.

Entonces, imaginemos una situación donde el cliente (persona de un lado de la pared), le pide al servidor uno de sus recursos. El cliente le envía al servidor (de alguna forma, carta formal, avioncito de papel, etc.) por arriba de la pared la lista de cosas que quiere. Una vez el, digamos, avión de papel cruza la pared, el cliente se sienta y espera. A todo esto, el servidor, del otro lado de la muralla, estaba sentado sin hacer mucho, esperando. El avión cae en sus manos, lee que una persona, del otro lado, requiere una fruta. Como las frutas están en un árbol, entonces, el servidor se para, corta la fruta, la lava, la adorna🙂, la coloca en una canasta, y la arroja al otro lado de la pared. Finalmente, el servidor se sienta nuevamente y espera. El cliente, obtiene su pedido, y lo consume.

El punto de esta analogía, es que debemos entender que, entre cliente y servidor no existe conocimiento mutuo. Además, cuando uno estaba confeccionando el mensaje, el otro simplemente estaba sentado sin saber que pasaba del otro lado del muro. Finalmente, cuando el servidor termino su acción, volvió a su estado de reposo, y quedo a la espera de otra petición.

Las paginas webs trabajan, en consecuencia, de forma similar. Pensemos en un cliente (computadora), que requiere de un servidor (otra computadora), una pagina web. En este momento, el servidor simplemente busca el recursos, lo procesa, y le envía el resultado al cliente. Una vez este resultado fue entregado, el servidor se desentiende por completo del cliente. A tal punto que el servidor simplemente no tiene idea de lo que el cliente hace con este resultado.

Por este motivo, es común (por si no lo sabían), que cada vez que realizamos una acción en una pagina web (apretar un botón, seleccionar un link, etc.), la página sufra de un evento de "flash", que provoca que la pagina se recargue por completo. En esta acción, el cliente, vuelve a confeccionar un pedido y se lo envía al servidor, para que este, nuevamente, lo procese y retorne los resultados esperados.

Y que tiene que ver todo esto con mi MessageBox?

Bueno, la respuesta es muy simple. Como el servidor, una vez finalizado el procesado de los datos, y enviado estos al cliente, simplemente pierde control del código. Es mas, como no existe un control directo sobre las acciones a realizar en el cliente, este no podría, por ejemplo, capturar la acción que el usuario (en el cliente), hubiera hecho sobre la ventana del mensaje. De esta manera, el tratar de arrojar un mensaje con código ASP.net, a lo sumo, este debería asomarse (verse), en el lado de la pared del servidor, ya que este lado es el lado en el cual este (el servidor), tiene jurisdicción.

Lo que se suele hacer, para solventar este problema, es que justamente, el cliente, sea el que muestre el mensaje, y en base a las acciones realizadas por el usuario, confeccionar un nuevo "avión de papel", para enviárselo al servidor.

Otras técnicas mas avanzadas usan implementaciones de A.J.A.X. para evitar, por ejemplo, el parpadeo de la pagina. Pero no nos confundamos, aun (por mas implementaciones que hagamos) se sigue confeccionando un mensaje para ser enviado al servidor y que este reaccione con una respuesta.

Y, posiblemente, hasta que no cambie el protocolo por el cual se sostiene el web, esta situación siga siendo inmutable.


3 comentarios on “MessageBox en ASP.net. Porque no me funciona?”

  1. Marco dice:

    Que buena tu analogia, gracias por aclarar esa duda sobre los mensajes en asp.net, felicitaciones

  2. Marco dice:

    Podrias darme una explicacion de que es programacion orientada a objetos en asp.net c#?

    • Bueno, eso sería algo complicado en un par de líneas de este comentario.

      Para explicar que es programación orientada a objetos con C# (ASP.net es una tecnología, no un lenguaje), se requerirían varios libros, de hecho existen. Te recomiendo que busques libros bajo este tópico.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s