JASoft.org

"Serializar" objetos comprimiéndolos antes para ahorrar espacio y los problemas que podremos tener

"Serializar" objetos comprimiéndolos antes para ahorrar espacio y los problemas que podremos tener
Esta pregunta surgió el otro día en uno de mis cursos on-line de campusMVP y la verdad es que es bastante interesante, no tanto porque sea especialmente difícil de hacer, si no por las implicaciones que tiene su aplicación en la práctica. La idea está muy bien: dado que estoy almacenando objetos de mi programa en disco (o enviándolos a través de la red), si los comprimo debería ahorrar espacio en disco y/o ancho de banda. De hecho, la idea es tan buena que en ASP.NET 4.0 una de las novedades es que el almacenamiento de sesión fuera de proceso (es decir, cuando guardamos la sesión en un servidor de estado remoto o en un SQL Server), tiene una nueva opción para permitir la compresión de los datos antes de enviarlos para su almacenamiento o recuperación de sesión. Esto es muy útil para sitios web que quieren acelerar la transferencia de información en una granja de servidores, pero tiene la contrapartida de que los procesadores estarán más cargados debido a las operacioens de compresión ... [Más]

Nueva versión de CassiniAqui: sirve localmente cualquier carpeta con una aplicación Web

Nueva versión de CassiniAqui: sirve localmente cualquier carpeta con una aplicación Web
Hace ya más de 4 años, en diciembre de 2005, creé esta pequeña pero útil herramienta para programadores llamada CassiniAqui. Se trata de una aplicación que, una vez registrada en el sistema, añade una nueva opción al menú contextual de cada carpeta que nos permite servir sus contenidos usando el servidor Web de desarrollo de Visual Studio: Esto resulta muy útil a la hora de probar aplicaciones Web sin tener que abrir Visual Studio, para poder jugar con ellas de forma ligera en local. El servidor de desarrollo que viene con cualquier versión de Visual Studio es una versión modificada del conocido servidor Web Open Source llamado Cassini, de ahí el nombre de la herramienta. Novedades de esta versión Esta versión de CassiniAqui lleva el número 4.0 para hacerlo coincidir con el de la plataforma .NET. Lo he escrito con Visual Studio 2010 y C#, pero lo he compilado con la versión 2.0 del framework, por lo que puede ser utilizado aunque tengamos instaladas versiones más antig... [Más]

Enviar un archivo al navegador desde ASP.NET

Enviar un archivo al navegador desde ASP.NET
Otra pregunta muy común entre los programadores principantes es de qué manera pueden enviar al navegador de sus usuarios desde una página ASPX los contenidos de un archivo que está en el servidor. La mayoría conoce el método Write de la clase HttpResponse que se llama desde una página simplemente escribiendo:Response.Write("Hola desde mi página ASPX"); que lo que hace es introducir en el código de la página actual ese mensaje. Este método no se suele utilizar ya que introduce el texto fuera del flujo normal de renderizado de la página y por lo tanto suele quedar al principio de la página, descolgado. Se incorporó más por compatibilidad con ASP 3.0 clásico que por otra cosa. Sin embargo esto devuelve texto únicamente al cliente. ¿Qué pasa si queremos enviar contenidos binarios, como los de un archivo PDF o un DOCX? Tipos MIME Veamos un concepto básico de Internet explicado de manera somera para los propósitos que nos ocupan ahora: el envío de archivos. El  protocolo en... [Más]

Cómo incorporar Dynamic Data a un proyecto Web existente

Cómo incorporar Dynamic Data a un proyecto Web existente
El pasado lunes, en la charla on-line que impartí para el NEt User Group de la UOC sobre Dynamic Data, comenté que existía la posibilidad de sacarle partido a esta interesante tecnología sin tener que crear desde cero un proyecto especial de Dynamic Data, es decir, sin partir de este diálogo: Tal y como prometí ese día, a continuación explico cómo añadir las capacidades de Dynamic Data a un proyecto Web pre-existente. Como veremos se trata de algo muy sencillo. Dado que Dynamic Data se basa en el uso plantillas, tanto para las acciones como para generar campos, entidades concretas y otros controles, lo primero que debemos hacer es copiar desde un proyecto Dynamic Data pre-existente los siguientes elementos: 1.- La carpeta de nombre DynamicData2.- La página maestra Site.master y su correspondiente archivo de código Site.master.vb (o.cs si trabajamos con C#)3.- La hoja de estilos Site.css Usa el propio explorador de archivos de Windows para copiarlos, y luego refresca l... [Más]

Server.GetLastError no funciona en IIS 7.0 o superior: cómo solucionarlo y un truco general para IIS 7.5

Server.GetLastError no funciona en IIS 7.0 o superior: cómo solucionarlo y un truco general para IIS 7.5
Si llevas unos cuantos años en esto del desarrollo Web seguro que tienes todavía aplicaciones por ahí escritas en ASP 3.0, también conocido como "ASP Clásico". Este precursor del actual ASP era estupendo y funciona de maravilla aún hoy en día. A pesar de todas las virguerías técnicas existentes en la actualidad (que me encantan) me confieso un enamorado de esa antigua plataforma. El caso es que aún hoy en día, si tienes que montar una aplicación de ASP 3.0 incluso en un moderno Windows Server 2008 R2 con IIS 7.5, podrás hacerlo sin problemas y funcionará todo de maravilla. O casi... El otro día tuvimos que montar una de nuestras aplicaciones "legacy" en este entorno precisamente y todo parecía ir de maravilla. El caso es que nosotros instrumentamos todas nuestras aplicaciones, incluso  las antiguas, para llevar un registro automático de todos los eventos de inte... [Más]

Detener un Timer de ASP.NET 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

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

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: llamadas AJAX a servidores remotos

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]

¡Mi libro de ASP.NET 4.0 gratis en Internet!

¡Mi libro de ASP.NET 4.0 gratis en Internet!
Hoy, coincidiendo con el evento ReMIX en Madrid, en el que Microsoft está regalando mi nuevo libro "Tecnologías ASP.NET 4.0 (saltando desde la versión 2.0)", hemos puesto a disposición de todo el mundo este mismo libro gratuitamente en formato electrónico. Así que puedes leerlo completo on-line y, si te gusta, comprarlo en papel a la editorial. Ya tienes un botón directo de compra a la derecha de la página del libro. Tenemos DISTRIBUCIÓN EN TODO EL MUNDO, no sólo en España, así que no hay disculpa aunque estés en Alemania, jeje El libro estará disponible en Scribd para su lectura por un tiempo limitado, así que aprovecha, leelo ahora y ¡díselo a tus amigos! Este es el enlace al libro: http://www.scribd.com/doc/20154009/Tecnologias-ASPNET-40-saltando-desde-la-version-20 Esta disponible desde hoy por la mañana, pero se lo hemos comunicado en privado antes que a nadie a nuestros fans de la página de Facebook de campusMVP. Es una de las muchas ventajas de ser fan en Facebook, así que ... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico