Inicio- Presentaciones- Artículos- Utilidades- Links- Contacto- Acerca de...

Publicado el 19/Apr/2006

Recientemente he estado leyendo varios artículos y blogs que hablan sobre el patrón singleton. Su objetivo es asegurar que, dada una clase concreta, se dispone de una única instancia de ella en una aplicación.

La referencia principal sobre patrones es el libro “Design Patterns: Elements of Reusable Object-Oriented Software” donde se explica cómo funciona de manera genérica.

La gente sigue muchas veces al pie de la letra el libro y eso puede hacer que no se tengan en cuenta detalles del lenguaje o la plataforma que se esté utilizando y se llegue a situaciones que puedan complicarse, generándose errores en el código difíciles de detectar.

En el caso de .NET, hay una discusión bastante a fondo sobre el tema en el artículo “Exploring the Singleton Design Pattern”, donde se tienen en cuenta las ventajas del entorno concreto, evitando así muchos de los problemas que pueden darse si se intenta hacer una implementación directa según se copia el código del libro.

Teniendo esto en mente, en C# el código para un Singleton es bastante sencillo:

public class MiClase
{
 private MiClase() {}

 public static readonly MiClase Instance = new MiClase();

 public void HazAlgo()
 {
  …
 }
}

Como se ve, la implementación básica consta de 2 líneas de código, un constructor privado y una variable estática (Instance en este caso) que da acceso a la instancia única. Para entender los detalles de por qué esto funciona así, leer con detalle el artículo mencionado arriba.
A la instancia (única) de la clase se accederá desde el código cliente de la siguiente forma:


MiClase.Instance.HazAlgo();

Bajo mi punto de vista, esto queda muy limpio y sencillo de usar.

Los usos que se le pueden dar al Singleton son múltiples, como por ejemplo clases que almacenan información de configuración de la aplicación, clases para hacer logs, etc. Eso sí, ojo con su uso en aplicaciones web ya que podéis encontraros con problemas de concurrencia si no se tiene cuidado.

Archivado como: .NET
Publicado el 18/Apr/2006

Después de las quejas y peticiones por parte de mucha gente acerca del modelo de licencias de SQL Mobile (sólo licenciado para usarse en Windows CE y Tablet PC), Microsoft ha respondido y se va a modificar la política de licencias apareciendo bajo un nuevo nombre, SQL Server Everywhere Edition, que podrá usarse en cualquier entorno a partir de finales de año.

El producto es exactamente el mismo, lo único que cambia es su nombre y la política de licencias.

Esto va a posibilitar el desarrollo de aplicaciones que compartan una misma base de datos en múltiples entornos, lo que va a facilitar la vida a más de uno.

Archivado como: Microsoft | Windows Mobile
Publicado el 16/Apr/2006

Acude al taller que se celebra el día 27 de abril de 2006 en Barcelona.

Yo participo como ponente en una de las sesiones.

Archivado como: .NET | Eventos | Microsoft
Publicado el 22/Mar/2006

Ultimamente he estado probando diferentes dispositivos con diferentes versiones de ActiveSync (4.1, 3.5, 3.8, ...).

Después de instalar/desinstalar ActiveSync varias veces y volver a quedarme con la última versión (la 4.1 en este momento), vi que la opción de conectar ActiveSync con DMA había desaparecido de su sitio (en la versión en ingles de ActiveSync está en File-Connection Settings-Allow connections to one of the following -> DMA). Esta opción se instala con Visual Studio 2005 para permitir la conexión de los emuladores mediante ActiveSync y así poder probar diferentes cosas simulando un entorno más 'real'.

Si os ocurre lo que a mi, al perder esta opción de conexión se pierde la capacidad de conectar el emulador a ActiveSync, pero se puede restaurar fácilmente. Existe una dll COM en el directorio de instalación de los emuladores (típicamente en "\Program Files\Microsoft Device Emulator\1.0") llamada "SERDMAAsPlugin.dll". Este componente es el que implementa el tema de DMA en ActiveSync y tiene que estar registrado.

Para habilitar la opción de nuevo, primero hay que cerrar el proceso de ActiveSync (terminar la tarea 'wcescomm.exe' con el administrador de tareas) y ejecutar el comando

regsvr32.exe serdmaasplugin.dll

en el directorio en el que tengais esa dll. Una vez registrado de nuevo el componente, al arrancar ActiveSync estará de nuevo disponible la opción DMA y el emulador debería conectar sin problemas.

Archivado como: Windows Mobile
Publicado el 07/Mar/2006

Yo de mayor quiero hacer cosas de estas...

O al menos, comprarme uno...
Archivado como: Ciencia | General
Publicado el 02/Mar/2006

Aunque se puede usar .NET Compact Framework 2.0 y SQL Mobile 2005 en Pocket PC 2003 (basado en Windows CE 4.2) no hay soporte en otros dispositivos Windows CE 4.2, por ejemplo en los dispositivos industriales.

Este hecho ha recibido quejas desde distintos frentes (MVPs, clientes, ...) y, con la llegada de .NET Compact Framework 2.0 SP1 esto se va a solucionar, lo que alegrará a más de uno.

Hay más detalles en el blog de Mike Hall.

Archivado como: .NET | Microsoft
Publicado el 25/Jan/2006

Desde hace poco tiempo estoy siguiendo un web (Presentation Zen) que habla acerca de la creación de presentaciones y sobre cómo hacerlas más interesantes e impactantes.

Una de las cosas que más me cuesta en mi caso a la hora de diseñar las presentaciones es encontrar imágenes interesantes relacionadas con el tema en cuestión y, como resultado, mis presentaciones acaban normalmente sin imágenes :-(

Por suerte, en Presentation Zen han publicado una lista de sitios donde conseguir fotografías e imágenes, tanto gratis como de pago, que pueden ayudar bastante a mejorar las presentaciones.

Si os dedicáis a impartir charlas o participáis en eventos, puede que os sea útil contar con fotos de este estilo para ayudar en la presentación. Yo desde luego voy a intentar usarlas.

Archivado como: Eventos
Publicado el 23/Jan/2006

Si tenéis bases de datos SQL CE en versiones 1.0 o 2.0 y queréis actualizarlas a SQL Mobile, existe una utilidad llamada 'SQL Server Mobile Database Upgrade Tool' (upgrade.exe) que se ejecuta en el dispositivo y que os permite actualizarlas.

Tenéis más detalles sobre esta utilidad en el blog de José Miguel Torres.

Archivado como: Windows Mobile