|
Publicado el 02/Jan/2008
Aquí tenéis una interesante aplicación gratuita (de momento) para los usuarios de Windows Mobile 5/6. Se trata de una utilidad que reemplaza en cierto modo al Home Screen de un Pocket PC, aunque no lo deshabilita. Visualmente es muy agradable con animaciones y transiciones muy interesantes (que me recuerdan mucho a FlowFX, la entrada presentada en el primer concurso de desarrollo de OpenNETCF Community). Desde el punto de vista del uso, está pensada para ser utilizada principalmente con el dedo, aunque funciona bien con las teclas de desplazamiento. Veremos cómo evoluciona ya que aún es un proyecto reciente, pero no tiene mala pinta.
Publicado el 31/Dec/2007
Hasta ahora no había realizado más que pequeñas pruebas de LINQ, pero recientemente he cambiado de proveedor de hosting (al de momento magnífico discountASP) que ya proporciona soporte para .NET 3.5 y me he decidido a usarlo un poco más. En concreto he creado una nueva página de links, donde he puesto de momento los links que tengo alojados en del.icio.us y mis elementos compartidos de Google Reader, que es el lector RSS que utilizo. Tanto del.icio.us como Google Reader proporcionan acceso a los elementos públicos mediante una URL que ofrece un documento RSS en el primer caso (http://del.icio.us/rss/amezcua) y un documento ATOM en el segundo (http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast). Teniendo esto en cuenta, el funcionamiento de la página es realmente sencillo. Sin entrar en detalles los pasos realizados son: 1º Al cargar la página se obtiene un documento XML a partir de la URL para cada uno de los documentos anteriores. Esto es tan sencillo como: XDocument xmlDoc = XDocument.Load(urlServicio);
2º Una vez se dispone del documento se obtiene, mediante una consulta LINQ, una colección de elementos extrayendo los datos deseados del XML original. Por ejemplo, para el caso de del.icio.us se quiere obtener una colección de objetos con dos campos, 'title' y 'url':
var itemList = from item in xmlDoc.Descendants("{http://purl.org/rss/1.0/}item")
select new
{
title = (string)item.Element("{http://purl.org/rss/1.0/}title"),
url = (string)item.Element("{http://purl.org/rss/1.0/}link")
};
3º Cuando se tiene la colección creada (itemList) se puede utilizar DataBinding para vincular esta lista de elementos a cualquier control. En mi caso lo he vinculado a un control DataList. En el control DataList simplemente se especifica que se quieren mostrar los campos 'title' y 'url' definidos antes:
dlDelIcioUsItems.DataSource = itemList;
dlDelIcioUsItems.DataBind();
Como se puede ver hay, sin contar el control de errores, 4 líneas de código para cargar un documento XML remoto y mostrarlo en una página Web, bastante impresionante, teniendo en cuenta que para hacer algo similar hasta ahora lo que hacía era disponer de una clase que defina la estructura del documento, cargar el XML remoto en un XmlReader, deserializar el documento a la clase y finalmente obtener la colección de items interna de esa clase.
Una de las cosas que hay que destacar es el uso de los namespaces de XML. Como se ve en la consulta LINQ, para acceder a cada uno de los elementos del documento hay que especificar el namespace XML en el que se encuentra
{http://purl.org/rss/1.0/}
lo que define completamente al elemento XML concreto. Esta sintaxis, tal como está en el ejemplo, no me acaba de gustar, así que se puede mejorar de la siguiente forma:
XNamespace deliciousNS = "http://purl.org/rss/1.0/";
var itemList = from item in xmlDoc.Descendants(deliciousNS + "item")
select new
{
title = (string)item.Element(deliciousNS + "title"),
url = (string)item.Element(deliciousNS + "link")
};
En este caso se define un objeto XNamespace con el namespace adecuado y se utiliza en todos aquellos sitios donde se necesite especificar el nombre completo del elemento. Como el tipo XNamespace sobrecarga el operador '+' se puede usar simplemente añadiendo entre comillas el nombre del elemento XML. Esto no se encuentra en la mayoría de los ejemplos publicados por ahí sobre LINQ to XML, donde se utilizan documentos XML sin definición de namespaces, cosa que no es muy habitual en el mundo real ¿no?
Publicado el 18/Oct/2007
Desde hace tiempo existe una herramienta en .NET Framework llamada CLR Profiler que permite examinar el heap de memoria del recolector de basura de .NET de una forma gráfica con el objetivo de ayudar en la búsqueda de problemas relacionados con el uso de memoria en las aplicaciones. Unai y yo enseñamos el uso de la herramienta en el último Code Camp en Huelva, entre otas cosas. Esta utilidad se ha portado a .NET Compact Framework con la llegada de la nueva versión y está disponible como un Power Toy junto con otras herramientas. Steven Pratschner acaba de publicar el primero de una serie de artículos dedicados a explicar con detalle el funcionamiento de la herramienta utilizando una aplicación de ejemplo como guía. Si sospechas que tienes algún problema de consumo de memoria en tu aplicación .NET te recomiendo que leas estos artículos que te ayudarán a intentar localizar dónde está la causa.
Publicado el 13/Sep/2007
Con las primeras betas de .NET Compact Framework 3.5 se incluían una serie de utilidades que han desaparecido de la distribución encontrada en Visual Studio 2008. Estas aplicaciones se distribuyen ahora en un paquete de instalación independiente y su versión definitiva saldrá cuando se libere Visual Studio 2008 (actualmente están en versión beta también). Estas herramientas son: - Remote Performance Monitor, GC Heap Viewer y CLR Profiler. Permiten capturar métricas de rendimiento de aplicaciones para su análisis posterior así como capturas del estado de memoria de una aplicación .NET en un momento dado. Son muy útiles para verificar el uso de recursos por parte de las aplicaciones y depurar así su rendimiento, así como para capturar posibles problemas de leaks de memoria y similares.
- Application Configuration Tool (NetCFcfg.exe). Esta utilidad permite especificar la versión de .NET Compact Framework con la que se quiere que se ejecute una determinada aplicación .NET en caso de que se tengan varias versiones instaladas en el dispositivo. Por ejemplo se puede haber desarrollado una aplicación con .NET CF 2.0 pero se ha actualizado el sistema y se quiere forzar a que esa aplicación concreta se ejecute con la versión 3.5, aunque la 2.0 sigue instalada también. Esta herramienta se ejecuta directamente en el dispositivo.
- NETCF Service Metadata Tool. Con esta utilidad se pueden generar clases proxy para su uso con Windows Communication Foundation para .NET Compact Framework. Es el equivalente de svcutil.exe en el PC.
- Remote logging configuration tool. Esta herramienta permite configurar la creación de archivos de log que incluyan información la carga, errores, uso de interop, utilización de la red y ejecución de finalizadores de aplicaciones .NET. Estos logs son muy útiles para la detección de posibles problemas cuando una aplicación está en fase de pruebas.
- NETCF Network log viewer. Utilidad para la visualización de los logs de uso de red obtenidos con la herramienta anterior.
(obtenido del blog del equipo de desarrollo de .NET CF)
Publicado el 05/Sep/2007
Los chicos de OpenNETCF acaban de abrir un nuevo sitio web orientado a la comunidad de desarrolladores para dispositivos basados en Windows CE / Windows Mobile / .NET Compact Framework. Son de los mayores expertos que hay en este tema con lo que el contenido que encontraréis será de calidad. Inicialmente el sitio empieza con 3 puntos concretos: - Artículos técnicos. Artículos interesantes sobre desarrollo. Si queréis contribuir, se les pueden mandar artículos para su publicación.
- Concursos de desarrollo. Organizan concursos de desarrollo cada mes con premios interesantes para los ganadores. Este mes se trata de presentar aplicaciones o componentes con interfaces de usuario atractivas. Los premios son una copia de Visual Studio y un dispositivo Windows Mobile a elegir de entre varios.
- Un servidor basado en Subversion donde alojar proyectos Open Source. Ellos han colgado de momento varios de sus proyectos Open Source pero ponen el servidor a disposición de la comunidad para alojar otros proyectos relacionados con el desarrollo orientado a dispositivos.
La idea promete, así que estaremos atentos a ver cómo evoluciona.
Publicado el 21/Aug/2007
Andrew Arnott, uno de los programadores de .NET Compact Framework, ha publicado una lista de las características de WCF (Windows Communication Foundation) que se van a incluir en la nueva versión de .NET Compact Framework (3.5), esperada junto con Visual Studio 2008. Como siempre (y lógicamente) .NET Compact Framework incorporará un subconjunto de las características de su hermano mayor. Pero en este caso, .NET Compact Framework incluye una funcionalidad diseñada en exclusiva para él que, según aparece en esa lista, podrá ser utilizada desde WCF en el PC y es la posibilidad de realizar mensajería entre aplicaciones utilizando Microsoft Exchange como transporte (ExchangeWebServiceMailBinding). Este transporte de WCF ofrece ciertas características bastante interesantes sobre todo en el caso de aplicaciones que se conectan esporádicamente a la red, ya que Exchange almacena los mensajes recibidos hasta que pueden ser descargados por el cliente cuando éste tenga conexión. He visto ejemplos de cómo funciona en dispositivos móviles pero no lo he visto funcionando en el PC, así que habrá que probarlo...
Publicado el 17/Aug/2007
Daniel Moth ha publicado un vídeo cortito, de unos 14 minutos, explicando a muy alto nivel cuáles son las novedades que se incluyen en .NET 3.5. Aunque no se entra en detalle en ningún punto, es una muy buena forma de ver, de una sola pasada, los nuevos ensamblados incluidos en esta versión y cuál es su propósito.
Publicado el 10/Jul/2007
Hace un par de días he recibido mi copia de libro Microsoft Mobile Development Handbook editado por Microsoft Press del cual tuve el placer de revisar algunos capítulos mientras lo estaban escribiendo. El libro lo han escrito Andy Wigley, Daniel Moth y Peter Foot, tres conocidos MVPs en desarrollo para dispositivos cuando iniciaron el libro aunque ahora Daniel Moth ha dejado de serlo ya que ha pasado a ser empleado de Microsoft en el área de movilidad. Es un libro bastante completo (más de 600 páginas) que cubre casi todo lo relacionado con desarrollo para dispositivos Windows Mobile, centrándose en .NET Compact Framework 2.0 y ofreciendo una introducción a .NET Compact Framework 3.5 que vendrá con Visual Studio 2008, tratando temas de pruebas unitarias, LINQ y WCF para dispositivos. En su primera parte se centra en lo 'esencial' del desarrollo de aplicaciones móviles, aunque muchos de los temas se pueden aplicar a cualquier otro entorno .NET; en concreto el capítulo 4 sobre pruebas de las aplicaciones y gestión de excepciones. La segunda parte trata temas más concretos sobre los retos que presentan las aplicaciones móviles hablando sobre temas de red, threading, seguridad y criptografía, acceso a datos, gráficos, controles, etc... Existe un capítulo, el capítulo 5, dedicado al rendimiento de .NET Compact Framework que explica bastante bien cómo funciona, entre otras cosas, el recolector de basura de .NET Compact Framework y cómo usar las herramientas existentes para medir el rendimiento de las aplicaciones. Este capítulo, aparte del interés que tiene para los desarrolladores de aplicaciones móviles, también puede ser de especial interés para los desarrolladores de juegos basados en XNA ya que esta plataforma se basa en .NET Compact Framework. En definitiva Microsoft Mobile Development Handbook es un libro bastante recomendable para todos aquellos que quieran desarrollar aplicaciones para dispositivos Windows CE o Windows Mobile usando .NET Compact Framework escrito por gente que conoce bastante bien la plataforma.
|