JASoft.org

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

MENÚ - JASoft: JM Alarcón

JSONP: llamadas AJAX a servidores remotos

Como todo el mundo sabe, una de las medidas de seguridad más acertadas de los navegadores es la del aislamiento de los dominios para proteger la privacidad. Este aislamiento impide que, por defecto, se puedan transferir cookies entre dominios, que fallen los scripts que tratan de afectar a marcos con páginas que están en dominios diferentes y, por supuesto, tampoco permite hacer peticiones desde código JavaScript a servidores que están en dominios diferentes a la actual. Y aún así existen cantidad de vulnerabilidades (Cross Site Scripting, Cross Site Request Forgery, Cross Zone Scripting, etc...) relacionadas con robo de información y ataques distribuidos que están basadas en explotar código de JavaScript en aplicaciones mal construidas. Al final, cómo esté escrito el código de una aplicación web desde el punto de vista de la seguridad es más importante que todos los cortafuegos y otras medidas "de protocolo" que puedas incluir. Una de las implicaciones de este aislamiento entre ... [Más]

Cómo instalar el AJAX Control Toolkit en Visual Studio 2010

El AJAX Control Toolkit nos permite añadir más de 30 controles a nuestras aplicaicones Web para mejorar enormemente su interfaz de usuario. Tenemos desde simples mejoras estéticas como sombras, diálogos o validaciones mejoradas hasta complejos controles como un editor HTML o animaciones. Para añadirlo a nuestro Visual Studio sólo hay que crear un nuevo grupo en la barra de herramientas y usar la opción "Elegir elementos" (Choose Items si eres como yo y usas siempre la versión en inglés) para seleccionar la DLL del Toolkit y que los controles estén disponibles en VS: El problema es que en Visual Studio 2010, al pulsar "Browse" y seleccionar la DLL del Toolkit se produce un error y no deja cargar los controles: "Could not load file or assembly 'file:///C:\AjaxControlToolkit\AjaxControlToolkit.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)" El motivo es el tratamiento especial que hace la versión 4.0 de .NET de los ensamblados baj... [Más]

Cómo permitir la desactivación de los botones de radio

Esto, que parece una tontería, no lo es en modo alguno. Cuando colocas un conjunto de botones de radio en una página Web con etiquetas de tipo <input type="radio">, al pulsar sobre cualquiera de ellos, éste queda seleccionado. Al pulsar sobre cualquier otro del mismo grupo, el primero se deselecciona ya que sólo uno de ellos puede estar seleccionado al mismo tiempo. Este es el comportamiento normal y esperado. Sin embargo hay un problemilla que mucha gente se encuentra que con sorpresa no pueden solucionar: ¿qué pasa si quieres desactivarlos todos una vez que ya hay alguno seleccionado?. Prueba por ejemplo esta página. Al abrirla pulsa en los botones de radio de cualquiera de los grupos que contiene. Ahora intenta deseleccionarlos. No funciona. Normalmente estos botones de radio se usan para dar a escoger entre varias opciones excluyentes entre sí, pero también puede darse la posibilidad de que la elección sea 'ninguna'. Lo que suele hacer la gente para solucionarlo es i... [Más]

Permitir la cancelación de peticiones asíncronas AJAX

Una de las ventajas de AJAX, aparte de la posibilidad de simular interfaces de usuario tradicionales de una sola capa, es que sirve para lanzar desde el cliente tareas pesadas en el servidor mientras permitimos seguir trabajando a los usuarios en e la lado cliente (navegador). Pero ¿qué pasa si una tarea tarda demasiado y queremos permitir que nuestros usuarios la cancelen cuando quieran sin tener que esperar a que terminen? ASP.NET AJAX en sus extensiones de JavaScript contempla esta posibilidad de manera sencilla y nos proporciona una forma de conseguirlo con muy poco código. Por ejemplo, arrastra en un formulario Web un ScriptManager y un UpdatePanel. Dentro de éste último coloca una etiqueta y un botón. En el manejador del evento de pulsación del botón detén el hilo de ejecución durante unos segundos para simular una tarea que tarda mucho tiempo en ejecutarse y despues pon algo en la etiqueta para manifestar que se ha terminado la operación. Finalmente añade un control UpdateProg... [Más]

Consolidación de Scripts para mejora de rendimiento

Una de las mejoras sencillas y poco llamativas en primera instancia que ha incluido el Service Pack 1 de .NET 3.5 y Visual Studio 2008 es la consolidación de Scripts. Sin embargo es algo interesante que conviene conocer. Se trata básicamente de evitar que el navegador tenga que descargar multitud de pequeños archivos de Script desde el servidor, sustituyéndolos de manera automática por una sola descarga combonada, que es más eficiente y rápida como demostraré enseguida. Es la típica característica que va a pasar inadvertida para la mayoría de los programadores Web pero que es interesante, y por eso me ha apetecido contarla en detalle aquí. Para ello he desarrollado un ejemplo muy simple pero que da una idea de la utilidad de esta característica. En el siguiente vídeo muestro cómo funciona la consolidación de Scripts mediante las nuevas etiquetas CompositeScript. También muestro un control desconocido pero interesante y pensado para ayudarnos a trabajar con esta característica: el co... [Más]

Cómo detectar su nuestra página dispone de un ScriptManager o no

Hay veces que necesitaremos usar programáticamente un ScriptManager dentro de una página, por ejemplo para añadir dinámicamente referencias a Scripts o a servicios Web o WCF. Para ello deberemos automatizar el control ScriptManager que toda página AJAX debe tener, pero ¿qué pasa si no existe ese control? Para asegurarnos de que el control está añadido a la página y que podemos utilizarlo podemos emplear el método estático GetCurrent de la clase ScriptManager para verificar su existencia, así: public static bool IsScriptManagerPresent(Page p) { ScriptManager Smgr = ScriptManager.GetCurrent(p); return (Smgr != null); } Con esta sencilla función podremos averiguar si hay un Scriptmanager presente o no. Es interesante notar que este método funciona y devuelve el valor correcto incluso cuando el ScriptManager no está presente en la página actual sino en la página plantilla (Master Page) que la contiene. No obstante es importante darse cuenta de que en ese caso devovlerá true i... [Más]

Cómo usar Fiddler con el servidor de desarrollo de ASP.NET

En mi anterior post comentaba los peligros de usar alegremente los controles UpdatePanel de AJAX y mostraba con la excelente herramienta Fiddler cómo eran las peticiones que se enviaban y recibían. Alguien me ha preguntado cómo hago para poder utilizar Fiddler con el servidor Web de desarrollo que viene con Visual Studio (conocido comunmente como Cassini), ya que por mucho que actives Fiddler por defecto no captura las peticiones hechas a dicho servidor. El servidor de desarrollo sólo admite peticiones locales y accedemos a ése a través de una URL del tipo: http://locahost:3572/miapp Eligiendo un puerto aleatorio de cada vez. Cuando lanzas Fiddler éste se coloca como proxy de Internet Explorer interceptando todas las llamadas que hace éste a las páginas Web. Lo que ocurre es que IE cuando detecta que una llamada se va a hacer en local (contra localhost vamos) automáticamente hace caso omiso de los posibles proxy que hubiera y lanza la petición directamente, de ahí que Fiddler no... [Más]

Los peligros del Update Panel

Las tecnologías de Microsoft han adolecido tradicionalmente de un problema que es a la vez, paradójicamente, su mayor ventaja: la sencillez aparente de uso. Pienso que  la clave del éxito de Windows, Office y otros muchos productos de la casa de Redmond ha sido y es su sencillez de uso. Pero esta misma sencillez de uso se convierte también un arma de doble filo: hace que la gente se quede en la superficie de las cosas, sin comprender bien las consecuencias de lo que hacen. Ha pasado toda la vida con las versiones de servidor de Windows, y ha pasado y pasa con las herramientas de desarrollo. Al ser fáciles de configurar y utilizar la gente enseguida "controla" la tecnología correspondiente, lo cual es un error grave. En este caso me estoy refiriendo en concreto a la tecnología ASP.NET AJAX que tanto facilita el desarrollo de aplicaciones de interfaz avanzada para la Web. Desde mi punto de vista el Update Panel es una obra de arte que debería llevar un premio al diseño de... [Más]

En acción de combate real: aquí encontrarás muchas preguntas resueltas, en el Ask The Experts

Como seguramente sabrás si eres asiduo lector o lectora de este blog, hace un par de semanas participé como ponente en el lanzamiento de Visual Studio 2008, durante los TechDays, The Evolution Show, en Madrid. Como parte de ese evento, aparte de la consabida ponencia, participé en una sesión de Ask The Experts (ATE) el segundo día por la tarde, enla que tuve oportunidad de conversar con mucha gente (antes,durante y después) sobre todo tipo de cuestiones técnicas relacionadas con el desarrollo Web. El ATE es, básicamente, una lotería. LLegas, y la gente que está allí te empieza a preguntar lo que se le ocurra, así que nunca sabes por dónde te van a salir. En esta ocasión la cosa fue estupenda, y los asistentes hicieron muchas preguntas interesantes. ¡Gracias a todos los que asistísteis! :-) Los buenos chicos de Microsoft grabaron todo el ATE para compartirlo en su página Comando Tomate, la última ida de olla de esos cracks que trabajan en DPE de Microsoft Ibérica. Creo qu... [Más]

Trabajo con JavaScript en Visual studio 2008: lo que no vísteis en el Evolution Show

Hola a todos: Como sabéis la semana pasada estuve en el Evolution Show en Madrid, en la presentación de Visual Studio 2008, Windows Server 2008 y SQL Server 2008. De hecho estuvimos un montón de tutores de campusMVP dando las ponencias, como ya os había comentado, y tuvimos un stand de Krasis/campusMVP por el que se pasó  mucha gente. Lo pasamos estupendamente, y nos visitaron muchos amigos y alumnos, a los que me encantó saludar. Gracias :-) Los que tuvísteis ocasión de ir a mi ponencia sobre desarrollo Web sabéis los problemas que tuve. Mi portátil al que le acababa de instalar el SP1 de Windows Vista se negó a trabajar y se rompió miserablemente (pantallazo azul, aunque no lo viéseis, y eso que el día anterior por la tarde había ido a comprobar que funcionaba bien). Por lo visto (me enteré luego) al instalar el SP1 de Vista se ponen otra vez los controladores de Microsoft y quita los que tu tuvieses, por lo que si como en micaso el controlador del fabricante es más reciente y... [Más]