domingo, julio 29, 2007

.NET Framework 3.5 en Software Guru 2007

El próximo 29 de Octubre estaré dando una plática de .NET 3.5 en el evento de Software Guru 2007.

Les resumo un poco el evento. Está dividido en cuatro tracks, Herramientas y Tecnologías, Procesos, Ingeniería de Software y Estrategias para Empresarios. Todas tienen platicas muy interesantes intercaladas conferencias magistrales como la de Scott Ambler: Applying Agile Software Development Techniques on Real-World Projects.

Espero y tengan oportunidad de ir.

Visual Studio 2008 Beta 2 Liberado

Primero ve y descargalo y mientras se descarga puedes revisar todo lo que hay nuevo. Hay tantas características en áreas tan distintas que te sugiero imprimir y leer con calma el overview. Ahora sí, revisa el what's new donde encontrarás links para profundizar un poco más respecto a cada tema.

Algo de lo que más promete es la mejora en el IntelliSense para Javascript y ASP.NET Ajax y la vista en Split, al estilo Dreamweaver, para HTML y Diseño (algo tan simple, que no sé como no lo incluyeron antes).

Hablando de Split Views, el Diseñador para WPF funcionará de manera similar y obviamente también tendremos IntelliSense en el XAML.

Otra mejora importante es que podremos aprovechar nuestros nuevos procesadores de doble núcleo para compilar nuestras soluciones.

Existen otros detalles que pudieran parecer mínimos pero los apreciaremos bastante cuando naturalmente terminemos por usarlos como las mejoras al debugger.

Hay otras características que serán importantes para muchos, por lo que las mencionare aunque no me parezcan tan relevantes por el uso de otras herramientas que hacen muy bien su trabajo: LINQ to SQL y el O/R designer.

Hablando concretamente del .NET CF 3.5, otra vez, encontramos algunas ventajas tan simples pero muy apreciadas como el hecho de que al depurar al ocurrir una excepción hará el break en el lugar donde ocurrió y no en el Run Method (como odio esto) o que el StackTrace ahora incluirá la firma de los métodos para distinguir entre las sobrecargas.

Seguramente tener parte de WCF en Mobile genera altas expectativas, sólo espero agreguen soporte para JSON o algún protocolo más ligero que XML ya que transmitir por celular con estos formatos se puede volver prohibitivo y nos hace buscar alternativas menos practicas, pero económicas. El uso de Exchange como protocolo es, aunque una solución bastante sobrada, al menos una forma de resolver el problema de cómo notificar a los dispositivos móviles. Aunque realmente sigo prefiriendo la opción de SMS y requiere definitivamente menos infraestructura es bueno saber que existe la otra opción y definitivamente provee otras ventajas adicionales.

Para proyectos de Mobile encontraremos muchas herramientas como las de pruebas que tuve la oportunidad de usar en el Beta 1 en conjunto con TFS y tengo que decir que es lo mismo que si estuvieras usando Team Edition for Testers, realmente no hay ninguna diferencia, sólo que antes estábamos tan limitados que nos acostumbramos a que esto no funcionara como siempre debería haber sido. Se puede decir que simplemente hace lo que se supone que hace. Ahora a mi me hubiera gusto que tuviera dos modos (tal vez los tiene, pero no los encontré) uno para probar sobre el dispositivo (este si existe) y otro para probar lo mismo pero corriendo en el escritorio (este se tendría que hacer manualmente). Actualmente tenemos que crear dos proyectos, uno de Mobile y otro normal de pruebas donde hagamos referencias a los proyectos de Mobile (con algunos warnings que nos da) el de mobile lo usamos junto con el TestHarness del Mobile Client Software Factory para correr las pruebas dentro del dispositivo y el otro lo usamos para las pruebas dentro del escritorio e integración continua. Aunque tenemos forma de automatizar las pruebas de Mobile para que corran dentro de nuestro build, no tenemos manera de reportar los resultados de regreso a TFS, así que estábamos obligados a tener ciertas pruebas que corrieran en el escritorio, pero obviamente no todo lo podíamos probar en esa plataforma. Aunque ahora en VS 2008 podamos usar las del dispositivo para CI y que este reporte directamente a TFS, tienen la desventaja de ser lentas, por lo que sería necesario tener ambos entornos para ciertas situaciones, como pruebas durante el proceso de programación y una vez que pasen las pruebas en el escritorio correr las pruebas en el dispositivo.

Otra de las herramientas sumamente útiles, que ya tenemos actualmente como Power Toy de Mobile es el Device Security Manager que tal como su nombre lo dice, nos permite cambiar las configuraciones de seguridad, de tal forma que podamos probar nuestra aplicación en diferentes "entornos". Sin embargo, la mejor fuente para herramientas de Mobile es el Windows Mobile 6.0 SDK que merece otro post por sí sólo, el Cellular y GSM Emullator son bastante útiles. Tampoco podría dejar de mencionar los Power Toys que más usamos: ActiveSync Remote Display (para ver en tu escritorio la pantalla de tu dispositivo), CECopy y RAPIStart (para iniciar un proceso remoto).

Volviendo a VS 2008 y siguiente con Mobile, incluye nuevos Code Snippets, que hasta ahorita parecen estar sólo para VB, todos empiezan con sd para distinguirlos de los de escritorio.

En definitiva una de las principales ventajas es aprovechar las mejoras al lenguaje, extensión methods, tipos anónimos, lambda expressions, collection initializers y parte de LINQ que están ya disponibles también para .NET CF 3.5.

Sin lugar a dudas algo de lo más atractivo es el SQL Server Compact 3.5 aunque las ventajas listadas no parecen ser tan prometedoras, salvo SyncServices que no estará disponible para Mobile en el release de este año y es más bien un desarrollo del equipo de ADO.NET y no directamente del SSC3.5. Esta característica sirve para sincronizar con diferentes bases de datos o con SQL Server sin tener que usar Merge Replication o RDA. Lamentablemente para mobile parece que nuevamente nos quedamos un poco cortos, sin embargo, el hecho de que SQL Server Compact Edition lo estén usando para escritorio hará que evolucione a un ritmo distinto y esto se verán como beneficios en un futuro (cercano espero).

Para Datos, tenemos un nuevo designer que nos permite tener como DataSources, ResultSets, DataSets, Objetos y WebServices.

Espero y tengan oportunidad de probarlo.

lunes, julio 16, 2007

Simular el HttpContext desde ASP.NET

Les dejo el link de Phil que hizo una librería super sencilla de usar
http://haacked.com/archive/2007/06/19/unit-tests-web-code-without-a-web-server-using-httpsimulator.aspx
Todo lo que haces es iniciar la simulación y listo, todas las llamadas a tu código pueden usar algo como HttpContext.Current.Application como si estuvieras en Web.

Puede hacer más que eso, pero eso lo que he probado.