JASoft.org

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

MENÚ - JASoft: JM Alarcón

El operador doble interrogación en C#

Los tipos anulables en .NET 2.0 son una interesante característica a la que se le puede sacar bastante partido, como ya expliqué en su momento. Quiero comentar ahora una cosa que se me pasó entonces: el operador doble interrogante (??), el cual es además muy poco conocido. Dado que los tipos anulables pueden contener un valor o un nulo debemos realizar continuamente comprobaciones en el código para ver si tenemos nulos o no, algo así (ej.): int? num1 = 5; //En la realidad lo obtendríamos de una BD o algo asíint num2;if (num1 == null)   num2 = 0;else   num2 = num1; Lo cual es sencillo pero es un rollo de escribir si hay que hacerlo continuamente. Claro que podemos reducir el código usando el operador ? de toda la vida de C#: int? num1 = 5;int num2 = (num1==null)?0:num1; Es idéntico, más reducido, pero tampoco es mejore mucho la legibilidad ¿verdad? Bien, C# nos ofrece el operador ?? que hace exactamente lo mismo que lo anterior y tiene las virtudes de ser ... [Más]

Cambio del directorio de compilación temporal de ASP.NET

He leído esto en algún sitio recientemente y me ha llamado mucho la atención porque no lo sabía. Resulta que es posible cambiar la carpeta en la que ASP.NET 2.0 compila las aplicaciones y genera todos sus ensamblados. Para ello basta con indicarlo en web.config dentro del nodo 'compilation' usando el atributo 'tempDirectory', así: <compilation tempDirectory="C:\Temporales"/> Muy sencillo. Igual te puede resultar útil en alguna ocasión.

Cómo mezclar varios lenguajes de programación en una aplicación ASP.NET 2.0

Una de las cosas más reseñadas de ASP.NET 2.0 es que es capaz de gestionar páginas ASPX creadas en diferentes lenguajes todas al mismo tiempo. Es decir, puedes tener una página o un control escritos en C# y mezclarlos con otros escritos en VB.NET o J# sin problema. Incluso puedes depurarlos todos juntos desde Visual Studio, saltando sin problemas de un lenguaje a otro. Ahora bien, desde mi punto de vista esto no es demasiado interesante. Es raro que reutilices una página de una aplicación a otra y si escribes una aplicación completa desde cero normalmente lo haces en el mismo lenguaje. Hombre, pensando en equipos de desarrollo donde varios programadores contribuyen al mismo proyecto y trabajan en lenguajes distintos es muy interesante, pero vamos... Normalmente lo que compartes entre aplicaciones son controles o bibliotecas de funciones, las cuales normalmente deberías compilar en sus propios ensamblados y listo. Ya no tendrías que mezclar lenguajes ahí. Otra posibilidad es que teng... [Más]

Una manera mejor de persistir el ViewState

Siguiendo a mi post anterior, vamos a ver una técnica alternativa para conseguir la persistencia del ViewState en sesión. La anterior técnica, nativa de ASP.NET 2.0 adolecía de varios problemillas, los más importantes son: 1.- No eliminaba del todo el ViewState, sólo una parte del mismo. En formularios Web con muchos controles el tamaño del ViewState sigue siendo considerable, si bien se reduce bastante. 2.- Sólo funciona en ASP.NET 2.0, pero no en versiones anteriores. Voy a explicar a continuación una técnica alternativa que elimina estos problemas y tiene algunas ventajas a mayores. Para conseguir manejar a nuestro antojo el ViewState podemos sobrescribir dos métodos importantes de la página: SavePageStateToPersistenceMedium y LoadPageStateFromPersistenceMedium. Como se deduce de su propio nombre estos métodos se llaman automáticamente por la infraestructura de páginas A... [Más]

Problemas al descargar archivos desde IIS 6.0 con Internet Explorer

Este es un tema que me traía de cabeza durante varios días y que no lograba solucionar. Resulta que hemos colocado una aplicación Web en un servidor Windows 2003 de un cliente. En el directorio raíz de la aplicaicón había un par de archivos .exe que estaban ahí para ser descargados desde un enlace directo. Al intentar descargarlos desde Internet Explorer se quedaba el diálogo "flipado" mientras ponía "Obteniendo información del archivo...", y la descarga no comenzaba jamás. La configuración del servidor no tenía nada raro. Sólo lo habitual en un IIS, así que no encontraba explicación. Además ocurría en TODOS los IE y en todas sus versiones (incluyendo la última que acaba de salir, la 7), así que no era un problema puntual por un index.dat corrupto o cosas típivcas similares. Un verdadero misterio. El misterio aumentaba cuando veías que con otros navegadores (por ejemplo Firefox) los archivos bajaban sin problemas y se guardaban. Incluso si veías el tráfico que se generaba con un mon... [Más]

Función genérica para conversión entre tipos

La versión 2.0 de la plataforma .NET permite crear métodos y clases genéricas que trabajen de la misma manera, independientemente del tipo que utilicen para la operación. Puedes leer la introducción al tema que escribí hace ya un par de años (¡como pasa el tiempo!) con las primeras betas de .NET 2.0 en mi post: "Tipos Genéricos en .NET 2.0". El otro día me preguntaron cómo se podía hacer una función que sirviera para transformar de forma genérica entre dos tipos de datos. Es decir, una a la que le pasases una variable de un valor o una referencia de un determinado tipo y que devolviera el mismo valor pero con un tipo de dato diferente. En realidad ya existe una función similar desde la primera versión de .NET, y es el método ChangeType de la clase Convert. Este método tiene varias sobrecargas pero la que se usa más habitualmente toma como primer parámetro un valor a convertir y como segundo una definición de tipo al que deseamos convertir el anterior. Así, por ejemplo, para cambiar d... [Más]

Adios Dreamweaver. ¡Bienvenido Expression Web Designer!

Gran trabajo el que está haciendo Microsoft con sus herramientas de diseño para desarrollo. En concreto me ha encantado el nuevo editor para la Web que va a sustituir a FrontPage y que, con todo lo que tiene, sustituye sin problemas también a productos de la competencia como Macromedia Dreamweaver. Se trata de Expression Web Designer, que ahora está por la Beta 1. Vale la pena instalarlo y probarlo. Por lo que he podido comprobar estos días mientras lo probaba en mis escasos ratos libres, se trata de un producto muy estable a pesar de ser una Beta, funciona muy rápido en un ordenador normalito (yo tengo un Pentium IV a 1,7 y 512 MB de RAM como equipo de pruebas y va como un rayo), y lo único que necesitas es tener instala la plataforma .NET 2.0. Al contrario de lo que estábamos acostumbrados hasta ahora con las herramientas de diseño Web de Microsoft (yo personalmente siempre he odiado FrontPage), Expression trae todo lo que un diseñador y programador pudiera desear. De hecho tiene c... [Más]

Cómo buscar un dato en toda la base de datos SQL Server

Esto lo lei en Internet y me ha parecido muy interesante, así que como estos días no tengo mucho tiempo de escribir cosas propias lo comparto aquí. Puede resultar de muchísima utilidad. Hay veces en las que queremos buscar un determinado dato pero no sabemos en qué tabla o campo está, por lo que sería muy útil poder hacerlo en toda la base de datos al mismo tiempo. El siguiente procedimiento almacenado permite conseguirlo: CREATE PROC SearchAllTables(@SearchStr nvarchar(100))ASBEGIN-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.-- Purpose: To search all columns of all tables for a given search string-- Written by: Narayana Vyas Kondreddi-- Site: http://vyaskn.tripod.com-- Tested on: SQL Server 7.0 and SQL Server 2000-- Date modified: 28th July 2002 22:50 GMTCREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))SET NOCOUNT ONDECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)SET  @TableName = ''SET @Sear... [Más]

Monitorización automática de aplicaciones Web con ASP.NET 2.0 (yII)

Bueno, al final he tardado un poco más de lo que pensaba en sacar algo de tiempo para poner una segunda parte del anterior "post" sobre eventos y monitorización de aplicaciones (y ahora no es que tenga mucho tiempo tampoco), pero es que con el lanzamiento del "Pack Certificación" he estado realmente liado... Bien, sigamos... Para configurar elementos de notificación en nuestra aplicación Web ASP.NET 2.0, sólo tenemos que incluir algunos parámetros en el archivo de configuración de la misma, bajo el nodo <healthMonitoring>. De hecho ASP.NET 2.0 ya viene con algunos de ellos preconfigurados y funcionando. Por ejemplo, todos los errores no gestionados que se produzcan en la aplicación quedan automáticamente guardados en el registrode eventos del sistema, sin que tengamos que hacer nada especial: Esto es de extrema utilidad porque en caso de producirse un error en la aplicación que no hayamos controlado no tenemos que preocuparnos de pedirle a los usuarios que nos guarden los d... [Más]

Monitorización automática de aplicaciones Web con ASP.NET 2.0 (I)

Este tema siempre me ha encantado: la monitorización de tus aplicaciones para ver si se están comportando como es debido o no. Esto en su sentido más amplio incluye todo tipo de información: desde contadores de operaciones y rendimiento personalizados hasta gestión automática de notificaciones ante ciertos sucesos y registro de todo lo importante que haya. La API de ASP 3.0 que usábamos en Krasis ya tenía integrado un sistema de Log automático y explotación del mismo, así como algunas utilidades para gestionar errores de forma automática. En .NET la cosa mejora mucho porque podemos crear contadores de rendimiento personalizados y crear facilmente entradas en el registro de sucesos del sistema. En ASP.NET 2.0 los chicos de Microsoft se han superado también en este aspecto introduciendo lo que se ha dado en llamar "ASP.NET 2.0 Health Monitoring" o lo que yo llamaría en castellano a falta de una traducción mejor "Servicios de notificación y registro de ASP.NET 2.0". El sistema ofrece,... [Más]