JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

La problemática de los eventos unload, beforeunload y similares en dispositivos móviles y cómo gestionarlos

Aunque todos los desarrolladores Web tienen más o menos claro el funcionamiento de los eventos unload, beforeunload y otros similares en un navegador de escritorio, el tema de la descarga de páginas en los navegadores móviles es bastante complejo por la forma particular que tienen de funcionar respecto a un navegador de escritorio. Es largo de contar y con muchas ramificaciones, pero voy a intentar resumirlo. [Más]

Mi página Web Forms con UpdatePanel se carga el hash (#) de la dirección

Bueno, esto es tecnología viejuna pero que está en uso en miles (o millones) de Web de todo el mundo, incluyendo este blog en el momento de escribir esto en 2020. La maravillosa tecnología ASP.NET Web Forms fue un invento de Scott Guthrie (sí, ese Scott del polo rojo que manda tanto en Microsoft y parece un tipo tan majo) que permitía crear aplicaciones Web orientadas a datos aunque no tengas mucha idea de la Web. Y de hecho aún lo permite, viene incluida de serie en Windows junto con la plataforma .NET, y sigue siendo muy interesante para ciertos tipos de aplicaciones. Bien, el caso es que hay un efecto secundario del uso de estas tecnologías que puede volverte loco, aunque no se da con frecuencia. Si utilizas algún tipo de hash en tu URL (esas direcciones que terminan en un # con algo a continuación y que sirven para navegación interna en la página) de modo que permitas saltar directamente a alguna parte de la página, tanto los Web Forms "puros" como los UpdatePanel para AJAX se lo cargan. Vamos a ver cómo evitarlo. [Más]

Plantillas de lado cliente con JavaScript: ¿Qué tecnología utilizar?

En septiembre de 2009 Krasis Press lanzó al mercado mi libro “Tecnologías ASP.NET 4.0 (Saltando desde la versión 2.0)”. Fue un libro que se adelantaba en varios meses a la futura versión de la plataforma y el entorno de desarrollo. En el momento de escribirlo, en Julio de 2009, las últimas noticias sobre el lanzamiento del producto apuntaban a Octubre de 2009, y que muy pocos cambios iban a aparecer en la versión final. Por ello, a pocos meses vista de esa versión definitiva, aún con la Beta 1 de la plataforma, nos decidimos a lanzarlo al mercado. Trabajar con las Betas de Microsoft tiene muchas ventajas, pues te permite estar al cabo de la calle y adelantarte al mercado en las tecnologías que vendrán. Pero también tiene algunos inconvenientes, entre ellos que puede haber cambios de última hora que echen a perder el tiempo invertido. Al final, la versión definitiva de .NET 4.0 se fue retrasando y apareció el 12 de Abril de 2010. Este mayor ciclo de vida para las versiones previas del ... [Más]

Simular notificaciones PUSH en una página Web

En mi último post describía la arquitectura que utilizan tanto iPhone como Windows Phone 7 para enviar notificaciones PUSH desde aplicaciones externas a los usuarios de los teléfonos. La comunicación entre el dispositivo y el servicio de notificaciones se basaba en una conexión “raw” permanentemente abierta entre ambos. Pero ¿cómo podemos simular algo así en una página Web? Hace poco un alumno de mi curso de preparación del examen 70-515 de desarrollo Web con tecnologías Microsoft, me preguntaba acerca de esta cuestión. En concreto la pregunta iba sobre sobre cómo conseguir el efecto de actualización automática de información que consiguen algunas páginas (como las de apuestas o de información bursátil) en las que el servidor envía información a los clientes sin que haya –aparentemente- una petición explícita... [Más]

Mis dos libros de ASP.NET disponibles en PDF

Desde ayer están disponibles en la tienda on-line de Krasis mis dos libros de ASP.NET para compra también en PDF: Existen tres opciones a la hora de comprar cada libro: comprarlo en papel (como siempre), comprarlo en PDF o, para mi la mejor opción, comprarlo a la vez en papel y en PDF. En este último caso por sólo 5 euros (+IVA) más sobre el precio de papel podemos comprar el libro en PDF. Basta con seleccionar la opción que nos interese antes de darle al botón de añadir al carrito: El eterno dilema de la protección y el "pirateo" En krasis no creemos en sistemas como Adobe Digital Editions y similares que atan la compra a un dispositivo determinado y que coartan tu libertad de uso de lo que has comprado. No nos parece justo que compres un PDF y puedas leerlo solamente en el ordenador en el que lo has comprado y que tengas que usar un programa especial para leerlo. Queremos libertad para que el comprador haga un uso responsable de su compra. Por ello estos libros son PDFs que... [Más]

Anexo a mi libro de ASP.NET 4.0 - Plantillas AJAX

Por fin está disponible el anexo a mi libro de ASP.NET 4.0. Se trata de un pequeño capítulo adicional que explica unos pequeños cambios que ha habido en la versión definitiva respecto a la funcionalidad de plantillas HTML enlazadas a datos de ASP.NET Ajax Library, en el capítulo 5. Básicamente explica cómo obtener la última versión del código de Script y sacarle partido desde ASP.NET o desde cualquier otra tecnología (PHP, JSP, MVC o incluso HTML puro y duro), y los pequeños cambios en sintaxis que ha habido en un par de características en la versión final. Puedes leerlo íntegramente gratis on-line en Scribd: Tecnologías ASP.NET 4.0 - Anexo A - Enlazado a datos AJAX

Detener un Timer de ASP.NET AJAX

Los temporizadores (Timer) de las extensiones de AJAX para ASP.NET son muy útiles. Nos permiten ejecutar una determinada tarea cada cierto tiempo, provocando postbacks de la página  (tanto completos, como parciales) en intervalos regulares. Un único Timer colocado en la página puede conseguir que se refresquen todos los UpdatePanels disponibles o cada uno de manera individual. Lo habitual es colocarlos en la página y olvidarnos de ellos. Pero ¿qué pasa si queremos poder pararlos y activarlos a voluntad? La cosa tiene más complicación de la que parece a simple vista. Lo primero que se nos ocurre a cualquiera es que, dado que tiene una propiedad Enabled para activarlo y desactivarlo bastará con establecerla en False para conseguir el efecto deseado. Si lo hacemos desde un postback asíncrono enviado desde dentro de un UpdatePanel, ni se notará en la página, ¿no?. Lo malo de esta idea es que, simplemente, no funciona. El motivo es que en un refresco parcial de página, aunque s... [Más]

Compartición de recursos entre dominios: el estándar de la W3C

En mis tres anteriores post me centré en JSONP, la solución soportada actualmente por cualquier navegador para hacer llamadas a servicios JSON ubicados en dominios diferentes al actual (ver índice al final de este post). Ahora, tras quince dís sin tiempo para nada (con Codecamp y TTT para Microsoft por el medio), por fin saco un par de horitas para escribir esta últma parte de la serie, dedicada a los estándares. Las limitaciones del objeto XmlHttpRequest a la hora de hacer peticiones desde el navegador a páginas y recursos ubicados en otros dominios son de sobra conocidas. Ello ha hecho que los programadores busquen atajos para conseguir esta funcionalidad y saltarse esta barrera. Hasta ahora hemos visto cómo JSONP nos permite conseguirlo gracias al uso de la etiqueta <script>, y cómo se le puede sacar partido en muchas ocasiones. No obstante esta técnica tiene bastantes limitaciones: · Sólo ... [Más]

JSONP (yIII): Cuestiones de seguridad y ASP.NET rompiendo la compatibilidad en 3.5

En mis dos anteriores post (busca los enlaces al final de este post y leetelos antes si no lo has hecho) he estado hablando sobre la técnica de JSONP para consumo remoto de datos JSON entre dominios, algo a priori prohibido por el modelo de seguridad del navegador. Anteriormente comentaba que JSONP podría tener ciertos problemas de seguridad, y que para evitarlos en ASP.NET 3.5 se habían introducido cambios para paliarlos que rompían la compatibilidad con versiones anteriores. Voy a aclararlo ahora. El problema de seguridad tiene que ver con la obtención de acceso no autorizado a información privada que se comparte con JSON. Una de las técnicas habituales de securizar el acceso a los servicios, consiste en crear cookies encriptadas con una validez temporal limitada y asociadas a una sesión concreta. Esta técnica se utiliza de manera mayoritaria en los sitios Web actuales (como Facebook, Windows Live, o, como ya hemos visto, en la propia seguridad de ASP.NET). El problema de esta técn... [Más]

JSONP (II): Soporte desde ASP.NET AJAX 4.0

En mi post de la semana pasada presenté el concepto de JSONP (o JSON with Pading) viendo lo útil que éste podía ser para acercarnos a la visión de servicios Web verdaderamente integrados entre dominios diferentes, y desde el lado de cliente. En esta ocasión voy a comentar cómo sacarle partido desde nuestras aplicaciones creadas con ASP.NET AJAX y el soporte nativo que se ha incluido en la próxima versión 4.0 del framework. El soporte de JSONP desde ASP.NET 4.0 y Visual Studio 2010 es transparente para el programador, ya que basta con incluir dentro de un ScriptManager una referencia a un servicio ubicado en otro dominio para que éste asuma automáticamente que debe hacer la llamda con JSONP. Por ejemplo: <asp:ScriptManager ID="ScriptManager1" runat="server">   <Services>     <asp:ServiceReference Path="http://www.miotrodominio.com/Servicios/Inventario.svc" />   </Services> </asp:ScriptManager> Es así de fácil. Simplemente no s... [Más]