Crónicas de mi regreso a .net

Como mencioné hace un tiempo, he vuelto a desarrollar código con tecnología .net después de casi 2 años.

El proyecto en cuestión consiste principalmente en mantenimiento evolutivo de una aplicación desarrollada inicialmente en 2009 con Visual Studio 2008 y varios complementos como: AjaxControlToolkit, Web Service Enhancements 3.0, Crystal Reports y Enterprise Library 3 entre otros.  Un detalle no menor es que la aplicación ha estado congelada funcional y técnicamente desde 2010, por lo que los mencionados componentes siguen aún en uso.

La aplicación consiste en un producto ofrecido como servicio y que se encuentra actualmente en funcionamiento. La empresa que desarrolló este producto/servicio fue adquirida por otro empresa más grande y a partir de esto el nuevo dueño de producto ha decidido potenciar este producto/servicio, lo cual requiere el desarrollo algunas nuevas funcionalidades y la modificación de algunas otras ya existentes.

Como parte de mi backlog de trabajo estan como puntos más prioritarios:

  1. Armar la infraestructura de integración continua y despliegue automático, de cara poder liberar funcionalidad de forma frecuente.
  2. Implementar una nueva funcionalidad estratégica para el negocio.
  3. Actualizar la solución a net 4.5 y refactorizar algunos componentes.

Respecto a (1) he logrado interesantes avances que compartí hace un tiempo en un screencast.

Respecto a (2), la funcionalidad está aún en desarrollo y me resultó muy interesante pues tuve la chance de experimentar con algunas técnicas y herramientas para trabajo con código legacy (ah, si me olvidé de mencionarlo, la solución casi no tiene test automatizados).

Sin duda una de las cosas que más interesante me resultó fue el uso de Dapper para facilitar el acceso a la base de datos. Resulta que el acceso a la base de datos estaba hecho de manera cuasi ad-hoc utilizando Ado.net, datasets y store procedures, artefactos que no me resultan para nada felices. Sumado al hecho de que la última vez que escribí SQL a mano fue en 2005, desde entonces siempre he utilizado algún tipo de ORM para todas las operaciones tipo CRUD. Esta herramienta Dapper es muy simple, básicamente provee un conjunto de métodos de extensión sobre la clase DBConnection que facilitan el mapeo de objetos. No me animo a calificarlo como ORM, pues carece de ciertas funcionalidades como lazy loading y cache, pero más allá de eso creo que es una alternativa muy interesante cuando uno tiene que trabajar sobre una base de datos ya existente. Prometo dedicar otro artículo para contar más detalles sobre Dapper.

Por otro lado, si bien utilicé la técnica de inyección de dependencias, no utilicé ningún framework para ello, pues en el contexto de la funcionalidad que desarrollé introducir un nuevo framework era más complejo que  resolver la inyección de forma manual.

Visual Basic migration

One more time this morning I have been asked about VB6 to VB.Net migration. I have my opinion about this topic.

If you have a VB6 application that is working well and that maintainance is relativaly easy, then, why do you want to migrate? Just because .net is cool?, no that can’t be a reason. The reason that I have started hearing these days is: “Microsoft won’t give us support for VB6”. Ok, that is a good reason, but there is still another questions to be answer:

A) Do you want the same application (from user perspective and from technical perspective) running in a new platform?

or

b) Do you want to take advantage of the capabilities of the new platform?

If you answer is B, then I most of the cases you don’t need a migration, you need to build a new system, maybe you can reuse some assets like database schema, some stored procedures, etc.

But if your answer is A, then there are some useful resources you can count on. First of all lets hear the voice of Patterns & Practices Group at Microsoft: Guide for upgrading VB6 applications to VB.Net and VB6 to VB.net upgrade assessment tool. I think these resources are a good starting point to understand the implications of the epic.

There also some interesting materials provided by Artinsoft (a company specialized in software migrations) . They have developed a tool to automate the migration process and they have also written some articles about it: Design application migration strategy and some more specific ones.

Hope this help.

¡Quiero ser Productivo!

Me he propuesto aumentar mi productividad de desarrollo y para ello he planificado invertir cierto tiempo en la investigación, recopilación y desarrollo de extensiones, herramientas y templates para Visual Studio, es por ello que en los próximos dias voy a estar posteando bajo la categoria myNetTools. Para comenzar, vamos con algo simple, un item template de Snippets para Visual Studio 2005. Descargar

Enjoy it!