desarrolloMobile.NET Noticias

viernes, noviembre 21, 2008

Desarrollo de Servicios Windows para Mobile bajo codigo administrado

Recientemente me encontrado con un proyecto en Codeplex para la utlización de servicios bajo Windows Mobile de Peter Nowak llamado Managed Services for Windows Mobile. Se trata de una librería bajo código administrado que permite la creación de Servicios de forma aproximada a como lo hace Windows Desktop.



Entre sus características destaca:




  • Para utilizar esta libreria no se requiere de acceso a P/Invoke.


  • Está desarrollada en .NET CF 2.0.


  • Ejecuta servicios automáticamente al iniciar el sistema


  • Contiene un administrador bastante sencillo de utilizar.


Por las pruebas que he realizado en un emulador tiene, aparentemente -está en versión Alpha-, buena pinta. Desde el mismo site de Codeplex viene con un ejemplo de servicio, documentación, código fuente y el Service Manager utility, con lo que ejecutarlo o crear tu propio servicio no es demasiado complicado, otra cosa es entender realmente como funciona internamente.



Por lo visto, está basado en un post del blog de Pavel Bánský, en el que explica cómo desarrollar servicios para Windows Mobile bajo código administrado. Todo parte de la idea de ejecución in-process de una DLL bajo \Windows\Services.exe, sin embargo la forma más habitual para hacerlo es mediante código nativo. Pavel muestra como encapsular las llamadas a WinCE y Peter se basa en el resultado para crear una librería íntegra para la creación de servicios bajo código administrado.


Si quereis profundizar más sobre el tema mirad en Services.exe Application Development for Windows Mobile-based Devices.

viernes, septiembre 26, 2008

¿¡¡Windows Mobile se esta mueriendo!!?

  Acabo de llegar a casa y he recibido, con agrado, mi publicación periódica de Smartphone & Pocket PC Magazine. Sobre la portada principal venía enganchado en forma de aviso en tamaño completo una nota en la que comenzaba con:

Dear Smartphone & Pocket PC magazine Subscriber:


Mal vamos, a ver que ha pasado, pensé. Seguidamente después de explicar un resumen de los cerca de 11 años que lleva la publicación en el mercado, nos notifica qué en el mes de noviembre será la última publicación y seguidamente se suspenderá. Dicha suspensión es debida a la poca esponsorización y clientes de Windows Mobile


La nota no para aquí. Seguidamente anuncian que seguirán una nueva publicación llamada Smartphone Magazine's iPhone Life ya que consideran oportuno apostar por un teléfono cuyo acogimiento por parte de los usuarios le augura un gran futuro y, evidentemente, es totalmente lícito.


Para finalizar citan textualmente que ven un futuro muy negro a Windows Mobile, y que pese a los esfuerzos de algunos fabricantes y de la propia Microsoft por apostar por nuevos dispositivos, deciden apostar por el iPhone por cuestiones de negocio.


Esto es un fiel retrato de lo que está sucediendo en EEUU y que muy probablemente empiece a notarse en Europa con la llegada, desde hace ya unos meses, del iPhone. Además de preocuparme por aquellos que han ampliado la hipoteca para poder adquirir uno y ligarse de por vida con Telefónica, me preocupa la comparación iPhone-Windows Mobile que tiene lugar en algunos rincones de la red. Bajo mi punto de vita no existe comparación posible entre un dispositivo físico (cerrado y no tiene Copy&Paste) y un sistema operativo (que debió de haberse reciclado mucho antes); sí lo aceptaría entre iPhone- HTC Diamond, por ejemplo. 


Pero está no es la cuestión; no escribo este post para criticar o alabar. La cuestión es que de los más de 1.000.000.000 -mil millones- de móviles  que se vendieron en el mundo en el 2006, la mitad de la tarta correspondía a Nokia y a Motorola. Nokia será lo que será pero manda en el mercado; a mí no me gustan, pero están ahí. Motorola por otro lado hace sus finitos con Windows Mobile pero el afán de competir con las Blackberry & Cía, (creo -no tengo datos-) no ha dado muchos frutos. En este punto es dónde me interesa saber ¿Qué es lo que no está consiguiendo Microsoft con los fabricantes?  Por si fuera poco, esta semana se presentó en España en el Google Developer Day el G1 de HTC, el primer móvil que saldrá al mercado para la operadora AT&T en EEUU. Uno más al grupo. Este además, ha aprendido de los errores del iPhone, más la legión de seguidores de SO Linux y la amplia comunidad de desarrolladores que la promueven, se va a convertir seguro en el gran rival de Windows Mobile, me refiero a Android. ¿Qué pasará con el iPhone? ¿Conocéis un sistema llamado Mac que empezó por allá los 70?


De todas formas, creo que pese a que Windows Mobile 7.0 lo tendrá difícil, ofrecerá gratas sensaciones. Además es un sistema operativo basado sobre el núcleo multimodular Windows CE 6.0 con unos cuantos años a sus espaldas, punto que no comparte ningún otro SO. Me pregunto si los fabricantes y operadores también las tendrán.

sábado, septiembre 20, 2008

La herencia entre clases, ¿a ti te deja dormir?

Una de las malas prácticas más comunes que solemos acusar los desarrolladores es el abusivo uso de la herencia entre clases. De hecho, yo mismo en mis primeros pasos en OO con Java en la universidad, asociaba erróneamente la OO a la herencia, es decir si no hay herencia no hay OO. El supuesto o teórico despiece que debe permitir la reutilización de código gracias a la flexibilidad de esta propiedad, lo confundía con descuartizarlo de tal forma que obtenía un rompecabezas lógico de clases inmanejable e ineficiente; eso sí, el diagrama estático en UML quedaba muy bien (en apariencia visual claro).


Hace relativamente poco, hablando con un ex profesor sobre el tema en cuestión, me comentó acerca de la existencia de un principio, el Principio de Sustitución de Liskov  (LSP), el cual permite confirmar la eficiencia (no eficacia) de una herencia entre clases. LSP recibe el nombre de Barbara Liskov quién lo presentó en un seminario de OO. En la herencia se establece la subclase como “es un” (“is a”) -especificación- de la clase base y Barbara argumentó que además de “ser un”, la subclase debía “comportarse como” . Andy Hunt y Dave Thomas (The pragmatic programmer) resumieron LSP como: “Las subclases deben ser usables a través de la interfaz de la clase base sin que el usuario tenga la necesidad de conocer la diferencia.”. (Más info)


Esta misma tarde, ha tenido lugar un Webcast de Bruno, en cual he participado como oyente. Más allá del Webcast en sí, el cual ha sido brillante como no podía esperar,  Bruno ha hablado sobre el mal uso que se hace –de forma genérica- de la herencia, la cual cosa me ha llamado la atención y me ha dado pie a que, posteriormente, una vez finalizado el Webcast, le hiciera una pregunta a acerca del uso de test unitarios basados  específicos para evaluar la eficienciade la herencia, ya sea por LSP u otros técnicas. La respuesta fue buena: destacó la abstracción de interfaces –efectivamente como una aproximación válida-  y de un principio que comparto absolutamente con él: el Principio del Sentido Común.


Ahora bien, ¿Qué factores influyen en el sentido “más común” del sentido común? La experiencia, la capacidad de abstracción, los conocimiento teóricos sobre el tema,,,,, Cuando oí hablar por primera vez del LSP instintivamente analicé código hecho por mí para verificar si se cumplía dicho principio y encontré una herencia en cuestión –estoy convencido que hay más- que no lo hizo, sin embargo, dicho código forma parte de una solución funcional, está en producción. Luego, ¿es incorrecto pese a que funciona? ¿Es eficaz, pero no eficiente? ¿Podría encontrarme problemas si decidiera o requiriera extender las clases? Si es así, ¿Debo tener en cuenta al pie de la letra el LSP u otros mecanismos cada vez que confeccione un diagrama estático de clases?


Ojo, no pretendo discutir el LSP, faltaría más. La herencia llevada de forma eficiente  reduce la complejidad al desarrollador al poderse centrar únicamente en los atributos genéricos evitando tener que entrar en detalles; LSP es un principio, no como axioma sino lógico, que determina el nivel de eficiencia de la herencia entre clases y, por consiguiente, es un principio válido. Me refiero más a la línea que marcan los principios y las doctrinas académicas y las necesidades y realidades actuales.


Probablemente en este punto entre en escena las técnicas de calidad y demás. Ahí no voy a entrar; en esta comunidad hay gente que sabe mejor que yo del tema; más bien me gustaría saber vuestra experiencia u opinión al respecto, anécdotas y situaciones paranormales más allá de los libros.


En fin, ahí se queda; el próximo sábado por la noche saldré, beberé, fumaré hasta perder el conocimiento; la herencia no me quitará el sueño ;-)

lunes, septiembre 15, 2008

SQL Server Compact 3.5. Buenas prácticas

Desde el pasado mes de abril hasta hoy he realizado varias charlas y he mantenido algunas conversaciones acerca de SQL Server Compact 3.5. De todas ellas, lo que más me ha sorprendido es que aún se relaciona la edición Compact con la antigua SQL Server CE y por consiguiente se da por hecho que el uso de base de datos SQL Server Compact está únicamente restringida a plataformas Windows CE. Lo cierto es que una de las características que, bajo mi punto de vista, va a suponer un antes y un después es precisamente que éstas puedan ser utilizadas tanto en plataformas Windows Desktop y Windows CE desde su aparición "como tal" a partir de la versión 3.1 (codename Everywhere).


SQL Server Compact 3.5 es un gestor de base de datos relacional orientada específicamente para cliente ligeros (SmartClients) en sistemas ocasionalmente conectados. De hecho, los Servicios de Sincronización para ADO.NET (Sync Services for ADO.NET) fue presentado junto a las primeras betas como versión 1.0 (fuera del runtime de MSF). El objetivo era el de presentar una tecnología que, pese a que despunta por su alta -relativa a las tecnologías actuales- flexibilidad, pretende marcar un antes y un después en soluciones de sincronización para cliente ligeros con bases de datos Compact. ClickOnce es otra tecnología de despliegue específica para este tipo de clientes.


En realidad todo esto son piezas tecnológicas cuya sinergia conjunto derivan en un potente conjunto de herramientas de desarrollo que facilitan la creación de soluciones ocasionalmente conectadas junto con todos los aspectos, peculiaridades y características que presentan.


Probablemente la pieza angular esta situada en la propia base de datos, un "simple" archivo sdf del cual recae todo -o una parte muy importante- del peso de la solución. El modelo de desarrollo empleado para este tipo de bases de datos no es muy diferente al que utilizamos habitualmente en aplicaciones escritorio pero sí tiene su peculiaridades, de hecho, es una base de datos que puede ser utilizada en una aplicación para Windows Vista y Windows CE, o lo que es lo mismo .NET Framework y .NET Compact Framework, luego si existen estas peculiaridades y la madurez de la tecnología actual lo permite, ¿porque no crear componentes de acceso a datos multiplataforma genéricos?, esto es, para .NET Framework y .NET Compact Framework.


En realidad esto tiene sus pros y sus contras, evidentemente. .NET Compact Framework es aproximadamente la equivalencia del 30% de .NET Framework y afrontar el desarrollo de componentes multiplataforma es posible, con sus "peros", pero posible. Un ejemplo lo tenemos en el uso de operaciones transaccionales, como novedad desde la versión 3.5 éstas pueden residir bajo ámbitos establecidos por el administrador de transacciones ligeras (Lightweight Transaction Manager) a través de las clases expuestas en System.Transaction, sin embargo, únicamente bajo plataformas Windows Desktop; he aquí un ejemplo de "peculiaridad para el código multiplataforma".


Pese a que SQL Server Compact no ha sido concebida como base de datos de gran capacidad de almacenaje y procesamiento no debemos descuidar la escalabilidad de la aplicación, conocer qué tipo de índices están disponibles y como sacar el máximo partido de ellos de cara a facilitar la tarea al optimizador de consultas, así como conocer, mínimamente, las diferencias de éste respecto su hermano mayor. Una característica que me gustaría destacar es que SQL Server Compact ofrece unas propiedades de gestión de excepciones, a través de las clases específicas distribuidas dentro de System.Data.SqlClientCE, basadas en códigos de errores nativos tipificados y errores HResults, propagados desde las capas más bajas de abstracción del Sistema Operativo, que bajo mi punto de vista son excepcionales si sabes cómo manejarlos.


Durante los más de 14 meses en los que estado inmerso en el estudio y búsqueda de modelos de desarrollo específico para SQL Server Compact, he tratado de sintetizar lo más importante para que el desarrollador iniciado con el este tipo de bases de datos parta con cierta ventaja antes de sus desarrollos, plasmándolo en un libro electrónico de poco más de 110 páginas y cuyo editor, SolidQ@Press, ha editado y ya está disponible.


Desarrollo de aplicaciones con SQL Server Compact Edition: Buenas Prácticas, no pretende ser un guía de referencia, sino un libro vertical, que trata todas y cada una de los aspectos más destacados que hay que tener en cuenta para la creación de aplicaciones consumidoras de la ‘mini' de la familia SQL Server, de forma directa, llana y sin introducciones.

lunes, agosto 04, 2008

Mi primer libro: SQL Server Compact 2008

¡Al fín! Después de más de un año de trabajo, en la que de forma solitaria empecé a escribir una referencia, un tutorial o sencillamenteunas notas sobre la nueva versión de SQL Server Compact 3.5 que posteriormente ha acabado en un libro, con la editorial de referencia para tecnologías .NET, Krasis Press.


¿Que deciros del libro? Pues se trata de una referencia completa de SQL Server Compact 3.5, incluyendo las futuras características del SP1 que aparecerá junto al de Visual Studio .NET 2008. He tratado plasmar que es realmente una base de datos SQL Server Compact, cuáles son su características diferenciales que la hacen única en la plataforma .NET de Microsoft, qué la diferencia de otras ediciones cómo SQL Server Express así como todo lo referente a la sintaxis T-SQL y desarrollo de aplicaciones con ADO.NET y los mecanismos de sincronización existentes.


 Agradecer, por último, a todos los que me han ayudado en esta obra, de una forma u otra, empezando por Fernando Bocigas, Jefe de Producto SQL Server de Microsoft Ibérica, quién además ha enriquezido la obra con el prólogo. A José Manuel Alarcón, Paco Marín, Marino Posadas, Unai Zorrilla, Francisco Otero, Francisco Javier Buzón, Santi Balboa, Eladio Rincón, Cristina González [MVP Lead], Ramón Bosch, Lleonard del Río, Pep Lluis Baño y al equipo de desarrollo de SQL Server Compact. ¡Gracias a todos!


Aquí os dejo más info del libro:


SQL Server Compact 2008 SP1 Referencia Completa









Microsoft SQL Server Compact 2008 SP1: Referencia Completa


José Miguel Torres
(Device Aplication Development MVP)


Editorial Krasis Press
426 páginas
Tapa Blanda
17,50 x 24,80 cm.
ISBN: 978-84-935489-4-0


Esta obra pretende ser una referencia completa que dé a conocer al lector de una forma directa las muchas posibilidades que ofrece SQL Server Compact 3.5, ya sean para aplicaciones Windows como de dispositivos Windows Mobile o Tablet PC, desde los fundamentos de las bases de datos embebidas hasta su aplicación en entornos distribuidos y sistemas ocasionalmente conectados, además de:




  • Familiarizarse con los componentes que conforman SQL Server Compact 3.5 así como herramientas y utilidades relacionadas.


  • Conocer cómo funciona una base de datos SQL Server Compact y sus características diferenciales.


  • Crear, administrar y manipular bases de datos mediante herramientas de administración con el uso de formularios y asistentes así como una guía completa de la sintaxis T-SQL soportada.


  • Conocer los mecanismos de bloqueo y las nuevas aportaciones en contextos transaccionales.


  • Desarrollar aplicaciones para Windows Mobile y Windows Desktop con ADO.NET 3.5 de forma eficaz.


  • Describir las características de los mecanismos de sincronización compatibles; cuál utilizar y porqué.


  • Utilizar la réplica por mezcla y el acceso remoto a datos (RDA), desde sus fundamentos, paso a paso.


  • Incluye las novedades reciéntemente aparecidas en el Service Pack 1.

viernes, julio 18, 2008

Técnicas de Test Extremo a la vieja usanza....

Dentro del ámbito industrial/empresarial el uso de dispositivos móviles o PDA requieren de unos requisitos que por naturaleza no llegan, ni de largo, los típicos dispositivos que llevamos, hoy en dia, en nuestro bolsillos, en términos de duración de bateria, soporte contra caídas, lluvia o ambientes "sucios" de partículas.


Los dispositivos rugerizados se catalogan mediante el estándard IP (Ingress Protection) el cual:




  • evalúa de un 0 a un 6 el soporte a la dispersión de partículas sólidas (aka polvo), siendo 0 algo así como No Protección y 6 Dust Tight, el cual certifica que un dispositivo puede trabajar en ambientes muy cargados de partículas.


  • por otro lado, evalúa de un 0 a un 8 el soporte de agua, siendo 0 No Protección y 8 Protección a Inmersión completa.

Para las PDAs industriales la típica certificación es IP54 o IP64, la cual permite la protección contra el polvo y las salpicaduras de agua. Además, estos dispositivos soportan la caída sobre hormigón desde 1,20 metros.


Por lo visto, además de la terminología y estandarización - hay más -, las pruebas que realizan los fabricantes están basadas en los principios de Pirron, al estilo empírico extremo, y si no mirad el siguiente video sobre el motorola (Symbol) MC9090 que he encontrado, (puestos a filosofar), causalmente.




miércoles, junio 25, 2008

Cliente SQL Server Express para Sync Services para ADO.NET


Acaban de anunciar, en el blog del equipo de desarrollo de MS Sync Framework, un ejemplo (en CodePlex) de cómo utilizar SQL Server Express para a sincronización mediante Sync Services for ADO.NET.


Pese a que muestra una clase que imementa de ClientSyncProvider, el ejemplo nos permite ver toda las complejidad ( y consiguiente flexibilidad ) que esconde el proveedor local de sincronización. Hasta ahora el único cliente específico que incorporan los servicios de sincronizción es para la edición Compact de SQL Server a través de la clase SqlCeClientSyncProvider, la cual nos resuelve toda la complejidad. De todas formas, la especificación del proveedor para SQL Server Express nos puede servir de guía para el desarrollo de otros tipos de proveedores.


Por último, recordad que la RC0 de los servicios de sincronización se presentan con el RC0 de SQL Server 2008.

miércoles, junio 11, 2008

Liberado Microsoft Sync Framework RC0

Liam Cavanagh ha anunciado el blog oficial del equipo de desarrollo la presentación de MS Sync Framework en la RC0 del SQL Server 2008 que ya está disponible para suscripciones MSDN.
Durante la instalación de SQL Server 2008, se nos da la opción de instalar MS Sync Framework. La versión que se presenta es, asismiso, una Release Candidate 0 de MS Sync Framework 1.0 y Sync Services for ADO.NET 2.0.
Pues nada, esto parece que empiezar a tomar forma y posiciones. Hay que estar al tanto a esta tecnología; la verdad es que promete ;-)

lunes, abril 28, 2008

SQL Metal OSUI for Visual Studio

Acabo de subir a codeplex una version totalmente funcional de SQL Metal OSUI para Visual Studio.

SQL Metal OSUI es una herramienta Open Source que mediante sqlmetal.exe genera archivos dbml, map y de código CS y VB para la generación de LINQ to SQL con bases de datos SQL Server Compact.

En esta versión, la he integrado con Visual Studio como herramienta externa. Para instalarla bajaros el instalador y seguir las instrucciones. En principio no es complicado pero, de momento, la integración con Visual Studio será manual.

Salud!!

martes, abril 15, 2008

MVP Global Summit 2008.- Dia 1

Pues después de haberme habituad al desfase horario y haber pasado el dia del domingo paseando por Seattle con Alejandro Mezcua (byteabyte.net), Julian Peris y Salvador Ramos (helpdna.net), en la que, dicho sea de paso, nos homenajeamos con una mariscada de aquí te espero (ver foto), pues ha llegado el primer dia de "trabajo" despues de las presentaciones y registro correspondiente.


En esta primera parte, en el Washington State Convention & Trade Center de Seattle, he podido asistir a un Open Space (una especie de mesa redonda) con Michele Leroux Bustamante sobre Windows Comm Foundation - Avoiding Common Pitfallls, ( que por cierto tengo ahora mismo sentada en la mesa de justamente al lado en la zona de descanso ). Posteriormente hemos hecho lo propio con Carlos Mattos, en una charla acerca de LINQ to SQL y LINQ to DataSet Best Practices y otra con Elisabeth Vanderveld sobre Windows Mobile Platform - Enhancing the User Experience through Applications. La duración de las mismas era de aproximadamente 75 minutos y han habido unas 16 charlas en las tres sesiones de la tarde.



Ahora, en el descando antes del Welcome Dinner (es decir, la cena) estoy en la zona escribiendo de forma rápida estas líneas.

PD: Ayer estuvimos en el posiblemente último partido de los Supersonics en Seattle que ganaron 99 a 95 a los Maverick de Dallas. En cuanto al partido.... sencillamente impresionante. Un espectaculo.




Seguiremos informando.... Salud!!!!

miércoles, abril 02, 2008

Windows Mobile 6.1, características



Las prinicipales caracterísiticas de Windows Mobile 6.1 se agrupan en:


  • Inicio
  • Personalización
  • Mensajería
  • Productividad.

Incio


Es algo así como un Getting Started, punto de partida, que permite al usuario los 10 primeros días configurar las tareas básicas del dispositivo móvil de una forma clara y sencilla.



Personalización

Nuevo interface para la pantalla Hoy. Se trata de agilizar y obtener la información de una forma más sencilla, intuitiva y rápida mediante paneles deslinzantes.


Mensajería

SMS Encadenados

Pese a que es nuevo en Windows Mobile, al idea de SMS encadenados tipo correo electrónico no es nuevo. De hecho Blackberry ya lo incorpora y su uso es muy práctico.



Multiselección

Podremos seelccionar más de uno mensaje (sea de texto o de correo) y realizar una única operación sobre el agrupamiento (reenviar, eliminar, mover, marcar como leído, etc...

Direct Push

El proceso de sincronización remoto de los dispositivos basados en Windows Mobile 6.1 ha sido mejorado con Exchange Server 2007 Service Pack 1 (SP1). La arquitectura de sincronización ha sido rediseñada para reducir el ancho de banda en hasta un 60% y mejorar el tiempo de la batería en hasta un 33% (según las pruebas realizadas comparando dispositivos Windows Mobile 6 y Windows Mobile 6.1).

Productividad

Copiar, Pegar y Cortar.

Para las versiones Standard, es decir, pantall no tactil, ahora se podrá (al fín!!) copia, cortar y pegar en la composición de mensajes.


Aplicación gestión de tareas

Windows Mobile 6.1 añade un Gestor de Tareas para ayudar a los usuarios a manejar y controlar mejor la memoria y la batería de sus dispositivos al permitirles cerrar y conectar con aplicaciones y programas. También podrán ver el rendimiento general de los datos relativos a la memoria del dispositivo y el uso de la CPU. Por ejemplo, si una persona quiere escuchar música utilizando Windows Media Player Mobile a la vez que utiliza otras aplicaciones, un mensaje aparecerá notificando la insuficiencia de memoria para poner en marcha el reproductor. Utilizando el Gestor de Tareas, el usuario puede navegar rápidamente a través de la lista de aplicaciones que están funcionando en su dispositivo, para así salirse de aquellas que sean innecesarias y liberar de esta manera memoria.



Live Search

Live Search viene en ROM. (Los fabricantes deciden si incorporarla o no)


Internet Explorer Mobile


Internet Explorer Mobile mejora la capacidad de los usuarios de navegar en una página en concreto de la Web. Pueden seleccionar una porción de una página para ver mejor el contenido para después volver al tamaño estándar de visionado. Una vez que un usuario ha accedido a una página Web en particular, se puede mover la herramienta de selección sobre esa sección para verlo más cerca







miércoles, marzo 19, 2008

Windows Mobile Line of Business Solution Accelerator 2008

Acaba de aparecer la plataforma Line of Business actualizada a la version 2008. En esta ocasión cabe destacar la aparición de la mayoría de las nuevas tecnologías y características de la família de productos de desarrollo del 2008:
  • Uso de los Servicios de sincronización (Sync Services for ADO.NET) para Windows Mobile.
  • Ejemplo de comunicación mediante WCF utilizando Exchange 2007.
  • Capa de datos específica para SQL Server Compact 3.5
  • LINQ
  • Integración con MapPoint
  • ...

Para descargarlo hacer click aqui; encontraréis documentos, el código de ejemplo, en definitiva, todo lo necesarios para poner en práctica la aplicación.

lunes, febrero 11, 2008

Mobile World Congress 2008: Microsoft presenta Windows Mobile para Sony Ericsson


Microsoft acaba de hacer público esta mañana que Sony Ericsson presentará el nuevo teléfono móvil equipado con Windows Mobile. Se trata del modelo XPERIA™ X1, y estará presente en la segunda mitad de este mismo año.

Las características del XPERIA X1 incluyen:

• Forma curvada y con teclado QWERTY para acceso más sencillo, pantalla táctil de 3 pulgadas y cuerpo de acabado metálico y buena calidad.
• Windows Mobile, HSDPA/HSUPA y soporte Wi-Fi™ para que los usuarios puedan disfrutar de sus entretenimientos favoritos y puedan trabajar eficazmente mientras se mueven.
• Paneles XPERIA™ que facilita la navegación en Internet, multimedia y en otras aplicaciones con la punta de los dedos.

miércoles, enero 09, 2008

Deshabilitando WCFSvchost.exe desde VS 2008


Después de empezar a migrar algunos servicios WCF y de notar las nuevas caracterísitcas que ofrece como WCFScvhost.exe para albergar servicios (además de WCFTestclient.exe para consumirlos) me he encontrado con que al quere utilizar un host personalizado siempre me salía el wcfsvchost.exe.

Si quereis NO utilizar wcfsvchost para vuestros servicios, mirad esto, del msdn. Lo que dice es que para evitar que wcfsvchost.exe se ejecute, tenemos que utiliizar, desde la pestaña Debug de las propiedades del proyecto, la opción Start external program e indicar el exe (ya sea consola o windows) que hará de host del servicio. También podeis quitar la opción de Command Line Arguments para ejecución del cliente. Desde ese mismo instante Wcfsvchost.exe ya no intervendrá y os evitareis perder una mañana entera a solucionar esta jodienda.


martes, diciembre 11, 2007

Configurar Cellular Emulator

Configuración del Cellular Emulator y utilización, paso a paso...

Artículo de desarrolloMobile.NET



Paso a paso:



- En primer lugar abrimos el Device Emulator Manager y el Cellular Emulator

- Conectamos mediante el DEM con el emulador de Windows Mobile 6 Professional (La edición classic no soporta teléfono)

- A continuación nos dirigimos a la configuración del emulador (File à Configuration).

- En la pestaña Peripherals (Periféricos) asignamos el puerto COM que tiene establecido por defecto el Cellular Emulator (Ver imagen 1)

- A continuación hacemos un soft reset al emulador.

- Aparecerá en la barra de tareas de WinMobile 6 la cobertura de la antena de teléfono.


Imagen 1



Realizar llamadas desde Cellular Emulator al Emulador Windows Mobile 6 Prof.




- Sencillamente, desde la pestaña Call Manager introduce el número de teléfono origen y haz clic en Dial.







Imagen 2



Realizar llamadas desde el Emulador Windows Mobile 6 Prof al Cellular Emulator



- Marca el número de teléfono destino (cualquiera) para realizar una llamada. Cellular Emulator cogerá la llamada y la emulará.

- Si deseas emular una llamada cuyo emisor tiene un comportamiento predeterminado, por ejemplo, llamada ocupada (busy), marca los números de teléfono que se indican en Preset Number.





Imagen 3




Imagen 4



Intercambio de SMS entre ambos



- Desde la pestaña SMS podrás interactuar mediante envío de mensajes SMS desde y hacia el emulador. Sencillamente en Send to device desde el Cellular Emulator envía un mensaje al emulador Windows Mobile 6 y desde Receive from device mira los SMS enviados desde Windows Mobile 6.

NOTA: Evitar enviar palabras con letras acentuadas.





Imagen 5



Interoperando con GPRS (3G) y 2G



- Desde la pestaña Network podemos pasar de 2G a 3G. Si pasamos con 3G la configuración desde el emulador Windows mobile 6 debe seguirse de la siguiente manera:


o Vamos a Start --> Settings --> Connections.



o Añadimos una nueva conexión por modem (Add new modem connection)



o Importante seleccionar Cellular GPRS como modem de la conexión. Podemos inventarnos los demás datos.



o Conectamos y comprueba que empiezan a emitirse datos en el apartado Data Channels del Cellular Emulator.






Imagen 6




Imagen 7


jueves, diciembre 06, 2007

SqlMetal.exe User Interface

After trying out the new features of Orcas Beta 2, I noticed using LINQ to SQL projects, designers don't support SQL Server Compact Edition. The only way is using sqlmetal.exe command tool that allows to create either code, map, desginer files from any SQL Server database (any edition). I don't like this kind of tools, are so slow, so I decided to create a project to use sqlmetal.exe more easily under user graphic interface with .NET 3.5. My first idea was to create a Visual Studio AddIn but I didn't know how to begin besides was to busy to spent some time learning.

I created an User Control project using C# and embedded it into a Windows Forms project. Now I have my own SQL Server Compact Edition 3.5 database's generator to use with LINQtoSQL projects and is so usefull.

I think that it could be usefull for others developers and I just upload it in http://www.codeplex.com/ called SqlMetal Open Source User Interface (sqlmetal osui). You may download the source and test it and if you want, participate in the project.

Enjoy it!!


lunes, diciembre 03, 2007

La dilución de precisión de una señal GPS (para desarrolladores)

Pese a que existen más de 50 sentencias NMEA que son emitidas por los 30 satélites que tenemos alrededor de la esfera terrestre, los receptores que podemos encontrar típicamente en el mercado para los navegadores sólo utilizan unas pocas sentencias. Muchas fueron concebidas para fines militares con lo que abarcan tanto posicionemiento terrestre, aéreo y marítimo.

En muy típico encontrar en librerias clases (por ejemplo Microsoft.WindowsMobile.Samples.Location) que albergan el posicionamiento (latitud + longitud), altitud (MSL, sobre el nivel del mar), velocidad, trayectoria, rumbo, información de los satélites, etcétera. De todos estos datos se ofrece también la dilución de precisión del posicionamiento (además del vertical, horizontal y a veces de tiempo) y en muchas ocasiones no se tiene una idea clara acerca de qué tipo de información ofrece.

La dilución de precisón (DPO) se emplea en cartografía y describe la precisión del GPS en base a la geometria de los satélites. Cuando la señal DPO es alta, los satélites estan muy cerca entre sí con lo que la precisión disminuye y el valor DOR aumenta. Si por el contrario los satélites son distantes, la precisión aumenta y con ello el valor DPO disminuye. Existen diluciones de precisión para el posicionamiento horizontal (HDOP) , vertical (VDOP), el de posicionamiento (PDOP) y el de tiempo (TDOP) con lo que dentro del cada uno de dichos aspectos puede ofrecer un valor distinto. Los obstaculos urbanos y naturales puede aumentar el DOP de la señal del GPS.

Si teneis posibilidad de probarlo fijaros en los valores que se ofrecen. Normalmente un valor igual o inferior a 6 ofrece una fiabilidad buena (siendo ideal un valor 1), mientras que valores por encima de 8 son pobres pudiendo llegar a 50.

Como título he añadido para desarrolladores, o como máximo, para personas con un nivel matemático al mío. Digo esto porque en cualquier aspecto relacionado con el sistema de posicionamiento global, cuando quieres profundizar te muestran una ecuación de 5 a 10 bytes, es decir gigantesca (y si no mirar la imagen de abajo). Esta explicación es simplemente para curiosos que en alguna ocasión se han encontrado con las siglas DOP y no sabían que hacer con ellas ;-)



PD: Pá cagarse

sábado, noviembre 10, 2007

desarrolloMobile.NET a punto

desarrolloMobile.NET


Novedades en desarrolloMobile.NET:



  • Todas (al menos las que pueda) las novedades de dispositivos Windows Mobile

  • La librería Bluetooth para .NET sigue activa y puede ser accedida por http://library.desarrollomobile.net/

  • Tutoriales de inicialización a .NET Compact Framework

  • Sección de videos de desarrollo de dispositivos móviles "How To" de MSDN y novedades y curiosidades de YouTube en Windows Mobile.

  • Wiki orientado a términos específicos de movilidad.

  • Sección FAQs con las preguntas y respuestas más comunes.

  • Sección Artículos dónde casos prácticos y soluciones.

  • Y por último algunos de los blogs msdn de los equipos de desarrollo de Microsoft agrupados en la sección feedHunter.


En fín, para los que queráis colaborar las secciones FAQs, Artículos y WikiMobile están abiertas. Lo único que tenéis que hacer es registraros. Para los demás, espero que podáis encontrar alguna solución, idea o cualquier otra utilidad que estéis buscando.

viernes, noviembre 02, 2007

Logging de WCF sobre .NET Compact Framework

Dan Horbatt's ha publicado un interesantísimo post acerca de cómo seguir la traza de mensajes WCF cuando una aplicación .NET Compact Framework es el cliente. Si de por sí ya es compleja el logging en WCF, cuando lo trasladamos a .NET Compact Framework podemos morir en el intento. De hecho, a mí, ni se me había pasado por la cabeza.

Sin embargo Dan demuestra como a través del Remote Logger (incluido en el PowerToys 3.5 CTP ) podemos hacerlo mostrandonos un ejemplo con el emulador.

martes, octubre 16, 2007

desarrolloMobile.NET .... en pruebas




Ya estoy finalizando la estructura y diseño del nuevo site bajo plataforma dotNetNuke. Durante un par de semanas estará de pruebas e iré añadiendo recursos, FAQs, artículos y entradas en la wikiMobile.


Si quereis echarle un vistazo podéis entrar, registraros (con LiveID aún no) y criticarlo abiertamente ;-)


Cualquier sugerencia o colaboración o lo que sea será bienvenida.


martes, septiembre 18, 2007

Compact WCF Ten Commandments # .NET Compact Framework 3.5

De wcefe.blogspot.com:

  1. Compact WCF was born from E-Mail transport capabilities. Read and understand the story of "Lunch Launcher"
  2. Compact WCF is a subset of WCF Framework.
  3. Compact WCF only consume, don't host WCF Service.
  4. Forget Contracts. You are managing messages, so...
  5. ... be familiarized with Channel Factories and XmlSerializerWrapper.
  6. Compact WCF don't support MSMQ, TCP o others transports. Http/s and E-Mail transports bindings do.
  7. Forget transfer a large amount of data into a message, discard stream mode, is not available. "Buffer" it into your head.
  8. Compact WCF supports a subset* of WS_Security and WS_Addresing. [* -> only Basic256Rsa15.]
  9. Make Microsoft Exchange MVP o expert friend. Keep him/her close to you.
  10. Think Mobile.

viernes, septiembre 07, 2007

¿Saben cuántos móviles se vendieron durante el 2006?

Si hablara con un colega le diría... "échale", ahora les digo, "dígan algo"...

Pues se vendieron unos 1.000.000.000 de móviles...si, cuenten los zeros; tiene 9, es decir, unos mil millones de móviles en todo el mundo. Sólo en el último trimestre (Campaña de Navidad incluida) el 30%. Nokia y Motorola se repartieron la mitad del "pastelito".

Para este año algunas compañías calculan unas ventas similares al del 2006. Es decir que si buscan trabajo no descarten enfundarse de rojo, dejarse barba, teñirla de blanca y alquilar (creo que vale una pasta, aviso) un reno (una fregoneta, también vale). La industria apoya a Santa Claus , está claro, y ahora se acercan las fechas más "productivas".

martes, septiembre 04, 2007

Windows Mobile Developer Briefing 2007 # Mobility Sub Tour #

El próximo 20 de septiembre se celebrará en Barcelona tres eventos simultaneos para desarrolladores, partners y clientes totalmente gratuito. Asistiré al de desarrolladores bajo el nombre Windows Mobile Developer Briefing 2007. Para las demás reuniones:

Windows Mobile Partner Briefing 2007
Windows Mobile Enterprise Customer Briefing 2007

Nos vemos!!!

martes, julio 31, 2007

MPx 300 Firmware updated!!!

Pues sí!! ya tengo la última versión ROM operativa para el MPx, (21 March 2005). Trabajito me ha costao.... si alguien está interesado contactarme!!!

lunes, junio 25, 2007

Local Server Framework for Windows Mobile

Local Server Framework(Sólo para Windows Mobile) forma parte de Windows Embedded CE Tests and Test Tools, herramienta que viene junta a Windows Mobile 6.0 SDK y cuyo objetivo principal es el del testeo de drivers y otras funcionalidades del sistema operativo a través de una linea de comandos(Sólo para Windows CE).

Local Server Framework se centra principalmente en el tedioso trabajo de testeo de aplicaciones móviles contra servicios Web, mediante la simulación de un falso servidor local que simula dicho contexto. Os recomiendo un WebCast que muestra en ejemplo de uso de esta herramienta.

Imagen enlazada al MSDN

Existen otras herramientas aunque son específicas para Windows CE a excepción de Local Server Framework que lo es para Windows Mobile. A continuación os muestro la lista de las misma con el enlace correspondiente:


martes, junio 12, 2007

Introducción a .NET Compact Framework 2.0

Estoy escribiendo una serie de articulos (en plan coleguitas ;-)) para introducirse en el desarrollo de Windows Mobile con .NET Compact Framework 2.0. Hasta ahora tengo acabado y ya podéis descargaros los siguiente:
  1. El primer proyecto con .NET Compact Framework 2.0. (Mayo 2007)
  2. AciveSync, Emuladores y el Device Emulator Manager. (Mayo 2007)
  3. Anatomia de un dispositivo móvil (Junio 2007)
Si deseas comunicarme al respecto algo (critica, sugerencia,..) no lo dudes y déjame un comentario.

lunes, junio 11, 2007

¿eres cirujano plástico.net?

Ante la inminente aceptación de WPF y Silverlight en dispositivos móviles, tablet pc, umpc (Mobile PC #Codename Origami#), smartdevice que se avecina ,explicaré mis opiniones respecto a la peculiaridades físicas de la pantalla antes de confeccionar una interfaz de usuario.

La resolución no suele ser muy grande y es, a veces, ligeramente más horizontal que un PC (p.e. 800x480 en Mobile PC). Los usuarios normalmente no utilizan teclados, sino que interactuaran con el dedo o con un lápiz táctil con lo que las zonas de selección son determinantes, entendiendo por zonas de selección (esto es la era WPF) todas aquellas partes del formulario encuadrado en la pantalla que contengan uno o varios controles que interactúen con la aplicación , botones, cajas de selección, etc. A muchos usuarios no les hará mucha gracia confundir una imagen con una zona de selección o lo que es peor no distinguir ninguna zona dentro del marco de la pantalla.

Hablando de usabilidad, traten de evitar el acercar las zonas de selección a los bordes de la pantalla. Se recomienda un tamaño aproximado de 10mm por área de selección. No permitan a un control Check Box navegar por vuestra aplicación con un tamaño inferior, no seria bueno hacer sentir al usuario, cuando éste tenga que seleccionar el valor de un Check Box, como si tuviera que tratar de 'hilar un hilo' en un alfiler. Recuerden que el ratón puede ser el dedo o el lápiz pero tampoco olviden que puede haber un teclado.

Eviten utilizar Scroll Bars. Sin embargo, como desarrollador de dispositivos móviles de plataformas Pocket PC y Smartphone yo los utilizo a menudo, pero siempre verticales. Si deciden poner que sean verticales, eso sí, cuanto menos mejor. Eviten las horizontales o lo que es peor las horizontales y verticales combinadas. No carguen la interficie gráfica en exceso. No exijan demasiado a los eventos; los botones de función que ofrece UMPC son muy bien avenidos, aprovéchenlos. Algunos Table PC ofrecen una pantalla táctil electromagnética que junto a sofisticados lápices permiten otro tipo de eventos. UMPC y Pocket PC no incorpora pantallas de ese tipo.

Las peculiaridades se centran principalmente en la pantalla y en el cambio de iteración entre ordenador y usuario en el que no hay ni teclado ni ratón, o en ocasiones sí. Por lo general los desarrolladores de dispositivos embebidos (desde Smartphone hasta Tablet PC dónde la características de las pantallas limitan las aplicaciones por motivos obvios), que son capaces de elaborar una interfície gráfica de usuario ágil, funcional y además gráficamente agradable son, para mí, auténticos 'cirujanos plásticos' del desarrollo.






domingo, junio 10, 2007

blogs y sites interesantes

No soy muy constante en eso de periódicamente "invertir" un tiempo en leer blogs y demás sites, los cuales no niego que sean interesantes. en este mismo blog, expongo a vuestra izquierda una lista de enlaces de los que más frecuento.

Ayer me comunicaron que uno de lo blogs que más leo había cambiado de "dominio". Recordé que tenia que cambiar el enlace de este blog cuando de repente no aparece. He vivido unos cuantos meses pensando que ese enlace enriquecía este blog (eso también vale ;-)) y cual ha sido mi sorpresa cuando no lo he visto.

El enlace en cuestión es del blog de Ramón Bosch. De aqui os aconsejo que no dejeis de echarle un vistazo, sus opiniones y forma de ver las cosas, sencillamente, son impresionantes.

viernes, junio 08, 2007

Office Mobile 2007 ¡por la patilla! (*)

Microsoft ha anunciado la disponibilidad de actualizaciones gratuitas de Office Mobile 2007 (*) para una selección de dispositivos durante el tercer trimestre del año. Office Mobile 2007 amplía las capacidades de Windows Mobile para leer y editar documentos creados con Microsoft Office 2007 y también incluye nuevas funcionalidades como Fax y ZIP.


Los fabricantes que lancen dispositivos con Windows Mobile 6 llevarán Office Mobile 2007 preinstalado a principios del tercer trimestre de 2007.

Microsoft también presenta una versión de Windows Mobile 6 para smartphones en japonés. El nuevo sistema operativo estará disponible en dispositivos de HTC, Sharp y Toshiba desde Junio de 2007 en Japón, con actualizaciones gratuitas a Office Mobile 2007 en una selección de dispositivos para el tercer trimestre de 2007. La última versión del sistema operativo ofrece funcionalidades vistas en el PC que ahora se trasladan a los dispositivos móviles.




martes, mayo 22, 2007

MPX: ¡¡Completé la trilogía!!

Pues si!! ya tengo en mi manos el gran MPX300 o MPx. Despues de haver pasado por el MPX200 y MPX220, con Windows Mobile Smartphone 2002 y 2003SE, adquirí por eBay una reliquia, el MPX300!!

Este movil "no ha visto la luz", ya que Motorola no lo comercializó en Europa. Despues de una tirada "Beta", fue comercializado en Singapur y debido a su alto precio (más de 1,000$) y la necseidad de Motorola de hacer competencia a Blackberry y Palm, decidió no comercializarlo, sacando en su lugar MotoQ.

Os dejo un video que encontré por YouTube con todas sus características. En realidad, en comparación con los actuales del mercado tiene poca memoria (64ROM y 28 RAM) y es lento (152Mhz) [#apareció en el 2004#], pero es una pieza digna de museo...


viernes, mayo 04, 2007

Sincronización ActiveSYnc con servidor Exchange (Lista de Errores)

Aqui teneis una completísima lista de errores, causas y soluciones de sincronización y otros entre ActiveSync y Exhange.

NOTA: Probablemente no cuente con los nuevos errores de Exchange 2007, en cuanto a sincronización con ActiveSync se refiere.

jueves, abril 26, 2007

WCF en .NET CF 3.5

Hace poco, a través del site de Alejandro Mezcua, encontré un post introductorio acerca de la utilización de WCF desde .NET CF 3.5. Ahora, Mark Prentice, autor de los post, muestra una de las utilizaciones que más beneficios va a aportar (creo yo) en entornos móviles, enlaces WCF a través de Exchange.

La idea nació dentro del equipo de desarrollo de .NET CF, concretamente de Mike Zintel, y fue Roman Batoukov quién a través de un post imprescindible, explicaba cómo desde entornos móviles podían sacar el máximo provecho WCF, ¿como? pues a través de correos electrónicos...

Si estais interesados sobre el tema os recomiendo primero, la teoria, de Roman y luego la puesta en marcha (practica) de Mark. El resultado... espectacular.

Si alguien quiere compartir su experiencia, por favor, dejad un comentario; quiero comprobar si os quedais tan impresionados como yo...

miércoles, abril 25, 2007

Se acercan MEDC (Las Vegas y Berlín)

Otro año más se celebra el Microsoft Mobile & Embedded Developer Conference en Las Vegas dónde las estrellas serán .NET CF 3.5 y Windows Mobile 6. Para la edición de Europa, este año pasa a celebrarse en Berlín.

Otro año más, también, que no puedo ir y me voy a quedar con las ganas. Si alguién va que lo disfrute!!!

lunes, abril 16, 2007

Taggeado!!

Pues si, mi buena amiga Fabiana, me ha taggeado. Confesaré 5 cosas sobre mí que normalmente no cuento. Me apunto a esta estupidez :-)

  1. Cuando sea grande quiero ser piloto de avión y caminar por los aeropuertos con las espaldas anchas y mis 'lupas' RayBan, que por cierto ya las tengo aunque solo me las pongo en el coche. Soy un chiflado del Flight Simulator.
  2. Estoy 'chiflao' por el cava catalán. Mis preferidos son el Kripta d'Agustí Torelló, Reserva de la Familia de Juvé i Camps, Reserva de Sumarroca, 'er' de Cristina Colomer Bernat, Celler Batlle de Gramona y el Gran Reserva de Robert J.Mur, entre otros...
  3. Confieso que siento una enorme admiración por Juan José Moreno Cuenca, del cual tengo todas las películas que hablan de su vida, así como el libro autobiográfico que he leído ya dos veces.
  4. En mi coche tengo una pegatina/retrato de José Monge Cruz. Para quién le guste el flamenco, estará conmigo, sobran las palabras.
  5. Cuando era pequeño gané el campeonato de catalunya de cross y fuí subcampeón varias veces en varias categorias. Tenía una prometedora carrera en el mundo del atletismo que se truncó, para mi desgracia. Posteriormente pasé a correr delante de la polícia...

Podría profundizar en alguna de ellas, pero tampoco hay que pasarse ¿¿no??

Ah! se me olvidaba, voy a taggear (o como se llame) a Marino Posadas, Santi Balboa.

Windows Mobile 6 (SDK y API obsoletas)

Ya se ha publicado el SDK de Windows Mobile 6, tanto para la versión Professional (WM 6 inc. Phone Edition) como para la Standard (WM6 Smartphone).

Microsoft ha modificado los nombres de las categorias del nuevo sistema operativo de la siguiente manera:
  • Windows Mobile (Smartphone) = Windows Mobile Standard
  • Windows Mobile (Pocket PC) = Windows Mobile Classic
  • Windows Mobile (Pocket PC Phone Edition) = Windows Mobile Professional

De esta forma debemos indentificar los nuevos nombres la a la hora de crear un nuevo proyecto (Tipo de Proyecto) e Imágenes del Emulador.

Por otro lado también se ha publicado las API que dejan de ser funcionales en Windows Mobile 6. La verdad es que la lista es larga, así que os invito a echar un vistazo en Channel 9.

Service Throttling

Throttling viene de throttle, y este termino sólo lo había utilizado en aviación "move throttle from idle,..." y se refería a la palanca de gases de los reactores modernos. Pero que carajo significa en WCF??

Throttling es una técnica que permite la restricción de clientes de un servicio WCF. Ésta se aplica al Servicio y todos sus EndPoints. Los tres parámetros que controla son:

  1. Concurrencia máxima de sesiones
  2. Concurrencia máxima de llamadas
  3. Concurrencia máxima de instancias

Pese a que se asigna al tipo de Servicio ésta, al igual que otras, es un aspecto del hosting, con lo que deberemos indicar los valores en el .config del proyecto que lo hospeda. Un ejemplo:

[serviceBehaviors
[behavior name = "MiServicio"
[service throttling maxConcurrentsSessions = "10"
maxConcurrentsCalls = "10"
maxConcurrentsInstances = "5" \]

\]
\]

NOTA: He utilizado brackets (paréntesis) en lugar de <>




miércoles, abril 11, 2007

CATdotNET.org

Hace poco más de un par de meses me reuní con Lleonard del Río, socio-fundador de Raona, ya que nos rondaba por la cabeza la creación de un grupo de usuarios que englobara tanto a profesionales, como estudiantes o simples entusiasta de la tecnología .NET. A partir de entonces y con la inestimable colaboración y ayuda de Diégo Gómez, empezó a tomar forma lo que ahora es CATdotNET.org, un grupo de usuarios de .NET para la Catalunya central, en el que pretendemos ofrecer un marco de colaboración a través de nuestra web, aún en construcción, con reuniones periódicas entre Igualada y Manresa.

CORRECCIÓN:
A principios del mes de Mayo, convocaremos la primera reunión y poder ofrecer un par de charlas sobre .NET. La fecha y la hora así como el temario de las charlas no estan concretadas por tanto, en cuanto se hagan oficiales las podreis encontrar en la Web.

Asi mismo, si estais interesados en obtener más información, colaborar o cualquier otra sugerenicia u opinión, no dudeis en contactarnos.

martes, abril 10, 2007

Smart Client Software Factory, excelente!!

He estado 'trasteando' con la versión Alpha 7 de Abril del Smart Client Guidance que podeis encontrar en CodePlex. Lo que más me ha llamado la atención és la posibilidad de utilizar el Connection Manager, que tantas veces he necesitado desde las aplicaciones en Windows Mobile, ahora para Windows XP/Vista y con resultados sorprendentes y de forma sencilla...





Smart Client Software Factory forma parte de Smart Client Guidance de patterns and practices, en el que también engloba Mobile Client Software Factory (del cual dedicaré una serie de post). Además del ConnectionManager también encontraremos ejemplos de extensibilidad de WPF para nuestras aplicaciones Windows, así como todo tipo de ejemplos fundamentados en el 'padre' de SCSF, Composite UI Application Block, un marco de trabajo basado en .NET 2.0 y que permite el desarrollo de UI ricas, flexibles, extensibles y "fáciles" de desarrollar.

En fín, Smart Client Guidance es toda una herramienta en la línia de Enterprise Library 2.0, al principio asusto pero luego disfrutas a lo grande!!

lunes, abril 09, 2007

Cliente VB6

Por lo que he podido ver la interoperabilidad de clientes no WCF está bastante presente sin embargo con algunas conotaciones, ya sea el cliente Java, COM o VC++.

En el caso de Visual Basic, por lo que he podido ver, existen tres escenarios en función del Runtime instalado. Así, si el cliente posee .NET Framework 3.0, la opción más lógica es la creación de un ensamblado COM Interop, que contenga el proxy al WCF Service. Es decir, el cliente que, normalmente, generamos con Svcutil.exe, lo exponemos a COM y exportamos la biblioteca de tipos para que sea referenciada por un proyecto Visual Basic 6.0. En el segundo caso, el cliente tiene .NET Framework 2.0. La alternativa anteriormente comentada no es válida así que podemos generar, el lugar de un proxy WCF, un proxy ASMX. De las misma forma pasamos en proxy a COM Interop, exportamos la biblioteca de tipos y referenciamos o instanciamos desde VB6. La última, en la que no tenemos el CLR de .NET instalado, podemos utilizar SOAP. Windows XP viene con las biliotecas

martes, abril 03, 2007

Escenarios de seguridad en WCF: A nivel de Mensaje

¿Transporte o Menaje? Bien, según el escenario, aunque ahora no hablaré de ello (quizás otro post). Ante la posibilidad de implantación de servicios desarrollados con WCF, se presentan varios escenarios dónde la utilización de los mismo vienen, sino determinada, sí influenciada por su política de seguridad.

Modos de seguridad hay 5 [None, Transport, Message, Both, TransportWithMessageCredentials, TransportCredential Only], si quereis ampliar información mirar aqui.

Message Security with Username Client

Ante este contexto explicaré tres posible modos de autenticación UserName. Primeramente saber que en los tres modos de autenticación en el Servidor debe existir un certificado X509 para que el cliente pueda constatar la autenticidad del servicio. Si quereis más info de como crearlo mirar aqui.

En el intercambio inicial desde una llamada del cliente los datos en formato binario son trasportados mediante la especificación WS-Trust (véase TLS Negotiation). Una vez el servicio ha sido autenticado se establece un contexto de seguridad compartido [Shared security context].

Los mensajes, por defecto, están encriptados y firmados (véase ProtectionLevel ) y són transportados bajo dicho contexto de seguridad. La peculiaridad de este escenario és que el cliente es autenticado mediante un User y un Password. El tipo de enlace es wsHttpBinding, el transporte HTTP.

Modos de Autenticación:

* Utilizando autenticación por Windows: El tipo de credencial por UserName requiere de un valor User y otro Password que se deberán especificar a la hora de llamar desde el cliente mediante la propiedad clienteproxy.ClientCredentials.UserName.User o Password. Bajo el escenario en que nos encontramos, si no se especifica el tipo concreto de autenticación será, por defecto, autenticación Windows. Es decir que si en la llamada pasamos en User algo tal que 'Dominio\Usuario' con el respectivo password, la autenticación, con el permiso del controlador de dominio, se validará.

* Utilizando autenticación MemberShip: Pues como si se tratara de un site en ASP.NET podemos utilizar la misma funcionalidad. De entrada se me ocurre como ideal si se va a consumir por Internet y/o se va a utilizar la misma autenticación de nuestra site web o Intranet. Sin embargo, debemos indicar en el comportamiento del servicio (ServiceBehaviors\Behavior\ServiceCredentials) del archivo de configuración el tag siguiente:

[userNameAuthentication="MembershipProvider" membershipProviderName="SqlMembershipProvider"]

En este punto los valores que debemos pasar como User y Password són los que tenemos asignados dentro de Membership. Un buen documento que profundiza más es el siguiente.

* Otro escenario, quizás algo menos útil [aparentemente, opinión personal], pero mucho más flexible es mediante la autenticación parametrizada o customizada. Esto es, añadiendo una clase a nuestro Proyecto Servicio, que herede de UserNamePasswordValidator y sobreescribiendo (override) el método Validate, cuyos parámetros son user y password del tipo string, podremos manipularlos de la forma que queramos. Para ello el tag a añadir es:

[usernameauthentication="Custom" membershipProviderName="mypoject.myservice.CustomUserNameValidator, Project1"]

Dónde indicamos la clase que manejará la autenticación (CustomUserNameValidator), que hereda de UserNamePasswordValidator, y que está en el ensamblado (proyecto) Project1.

Ejemplo:

public class CustomUserNameValidator : UserNamePasswordValidator {
public override void Validate(string userName, string password) {
if (userName != "miusuario" password != "mipwd") {
throw new SecurityTokenException("Usuario/Contraseña incorrecta");
}
}
}

lunes, abril 02, 2007

Excepciones en WCF I (FaultException)

Cuando planteas la creación de un sistema bajo Windows Communication Foundation, una capítulo entero, lo inviertes en la estrategia de manejo de excepciones. No resulta complejo entender que una excepción se transmite como una "avería" dentro de SOAP.

Durante la captación de información previa a tomar una decisión me encontré con enlaces interesantes, como este de, como no, Rodrigo Corral, o varios documentos explicativos muy útiles como éste o éste, pero sin embargo, desde un punto de vista muy elemental. Los ejemplos del SDK de Windows son, también, de ayuda aunque pasan, también, de escenarios elementales a escenarios muy complejos (o al menos eso me ha parecido a mí).

Una de las batallas más arduas en la que me he visto envuelto a sido una excepción, muy simpática, pero que me ha llevado de cabeza FaultException was unhandled by usercode. En una solución, he puesto todos los proyectos, desde la definición del servidor hasta la implementación del mismo desde el Cliente. Cuando se generaba una excepción en el servicio, ésta no era controlada por try...catch desde el cliente; bueno, a ver, si que lo hacía pero al segundo intento. Esto es, se produce un error en servidor, se para la ejecución, vuelvo a ejecutar con F5 y el cliente obtenía la excepción como era de esperar.

Por si os pasa alguna vez, me han ayudado mucho estos dos enlaces de los foros de MSDN. En concreto éste. (el otro es éste). Sinceramente no me acaba de convencer, pero es lo que hay, almenos por el momento hasta que alguien diga exactamente el por qué.

Ahora me toca probar la capacidad del Enterprise Library en el control de errores, ya os informo.

lunes, marzo 19, 2007

Windows Mobile 6, Demo, SDK, y demás...

En el Download Center de MS hay disponible una versión en flash de Windows Mobile 6. Además, también estan disponibles el SDK tanto de la versión Professional como Standard. Por último, también podeis descarga el MS Device Emulator 2.0.

jueves, marzo 15, 2007

Documentar comentarios de un proyecto

Hace tiempo leí en el blog de Jorge Serrano, una herramienta de Microsoft para generar documentación de un proyecto Visual Studio 2005. La herramienta en cuestión se llama SandCastle y despues de instalar y probarla, la verdad es que me ha sido muy útil.

Sin embargo, es una herramienta de línia de comandos, con lo que no incluye un IDE. Como era de esperar existen varias alternativas al respecto y me quedé con uno, de Eric Woodruff, el cual ofrece un IDE muy similar a NDoc y muy sencillo de utilizar.

Los resultados... estupendos!!! El único inconveniente ha sido que al establecer la propiedad SdkLinkType a MSDN, para que consuma los WebServices del mismo, y al requerir salida a Internet mediante proxy me generaba un error tal que:

Info: ResolveReferenceLinksComponent: Preparing to query MSDN topic URL web service.
Error: ResolveReferenceLinksComponent: An error occured while attempting to query the MSDN topic URL web service. The error message is: Error de la solicitud con el c¢digo de estado HTTP 407: Proxy Access Denied.
Last step completed in 00:00:46.6418


La solución (notificada por Eric W) es crear el archivo BuildAssembler.exe.config al mismo nivel que BuildAssembler.exe con la siguiente información que encontrareis en este post.

lunes, marzo 12, 2007

Lanzado .NET CF 2.0 SP2

El equipo de desarrollo de .NET CF ha lanzado el SP2. Por lo visto se realizaron multitud de pruebas de compatibilidad y pese a que la mayoría a pasado el test hay algunas anotaciones a tener en cuenta que podreis encontrar en el blog de los mismos.

La nuevas características se centran, fundamentalmente, en el Remote Performance Monitor, el cual provee posibilidades de supervisión de anomalías en el Garbage Collector. Ésta y demás errores solucionados los encontrareis aquí. Por otro lado, la descarga la teneis disponible aquí.