El viernes 7 de abril, he asistido a una conferencia para arquitectos, en las oficinas de Microsoft Argentina. Los oradores fueron el bueno de Eugenio Pace, argentino ahora radicado en Redmond, en el grupo Patterns and Practices, y el “Gran Woloski”, a.k.a. Matias “Es un issue” Woloski, de Southworks. Pueden consultar los productos del grupo desde
http://msdn.microsoft.com/practices/
Mostraron el futuro del grupo al que pertenece Pace, y con el que colabora Matias. Es el grupo que produjo los Application Blocks, EDRA/Shadowfax, entre otros. Desde hace unas semanas, cambió de lugar dentro de la estructura del gigante de Redmond: mientras que antes reportaba para un área de marketing, ahora pasa a ser parte del grupo responsable del Visual Studio. Eugenio comentó que eso clarifica qué es Patterns and Practices. De alguna forma, los Application Blocks que se produzcan, podrán aparecer en el futuro como parte de Visual Studio, o como herramienta más integrada al mismo. Como ejemplo, el Updater Application Block, de alguna forma evolucionó a lo que apareció como tecnología ClickOnce.
La misión del grupo es crear guías de arquitectura, buenas prácticas, con ejemplos. Ya llevan trabajando en eso cinco años. Lo integran principalmente ingenieros de computación, y la división de roles y personas sigue los lineamientos de Microsoft Solution Frameworks. Por ejemplo, tienen Program Managers, y Product Managers, así como Testers, gente de User Experience, y demás de MSF.
Comentaron que los productos que generaron en este tiempo, son de tres líneas: libros, Application Blocks, y los nuevos Base Architecture Toolkits (afectuosamente llamados BATs). Los libros han sido la forma de difusión de conocimiento más exitosa de la historia humana. Pero el problema con los libros técnicos, es que muchas veces son de un volumen de páginas (y de centímetros cúbicos) impresionante (Eugenio puso como ejemplo un libro que produjeron sobre migración de proyectos Visual Basic 6 a .NET: son como 700 páginas, y según su expresión “es un arma de destrucción, la arrojan por la ventana, y rompe algo”). Los libros de referencias, no los leen, y sólo se consultan en caso de necesidad. Y los libros que explican nuevos conceptos, como patrones, son de alguna forma consultados. Pero detectaron entonces, que la gente les pedía algún ejemplo de todo eso aplicado.
Como lo consideraron un justo reclamo, nacieron hace años, los Application Blocks. Que los hubo de todo tipo, desde un Data Access Application Block que era “apenas” un Helper, una clase con métodos estáticos, hasta un Composite Application Block, que “abajo del capot” (para usar una expresión de Pace) “tiene de todo”. Yo he trabajado con los AB y me han parecido muy cómodos, porque resuelven el problema que se plantearon, y además, al tener el código, pasan dos cosas: uno aprende viendo código de calidad, y lo puede adaptar, en caso de ser necesario, a una necesidad particular. Yo no minimizaría esta última opción: si uno tiene el código, posee más opciones en la forma de implementarlo, o de solucionar un problema que se nos plantee en su uso. También esto permite entender algo que no funciona como uno espera, al poder depurar directamente sobre el código, o entender por qué algo que uno esperaba (un cache en web farm, por ejemplo) no funciona.
Pero si bien los Application Blocks permiten ver implementadas las ideas de los libros, no quedaba claro cómo usarlos en una aplicación completa. De ahí que desde hace un tiempo considerable, el grupo está trabajando en los Baseline Architecture Toolkits, o BATS. Hay dos liberados:
Smart Client BAT
http://practices.gotdotnet.com/projects/scbat
Services BAT
http://practices.gotdotnet.com/projects/svcbat
Más información sobre el lanzamiento del Services BAT en
http://staff.southworks.net/blogs/matiaswoloski/archive/2006/04/06/ServiceBatWorkspace.aspx
Un BAT entonces tiene ejemplos de aplicación, y además, tiene herramientas basadas en el
GAT Guidance Automation Toolkit
http://msdn.microsoft.com/vstudio/teamsystem/workshop/gat/
Eugenio comentó que uno de los problemas que tenían con anteriores productos, es la ausencia de integración con Visual Studio. En el grupo, no hay expertos en desarrollar diseñadores y herramientas integradas con VS, aunque éste los permite. De ahí que adoptan el GAT.
Con estas herramientas, demostraron en vivo, la creación de una solución de Smart Client. El GAT tiene un generador de código basado en un lenguaje de templates denominado T4, y la capacidad de lanzar tareas. También permite colgarse de los menúes del Visual Studio, por ejemplo, cuando uno crea un nuevo item para solución, puede aparecer algunas opciones de “wizards” con generación de código, orientados al Smart Client.
En el ámbito mobile, están trabajando en
Mobile Applications
Composite UI Application Block (para Windows Mobile 5.0, Compact Framework Net 2.0)
http://practices.gotdotnet.com/projects/mobile
Mobile Baseline Architecture Toolkit
http://staff.southworks.net/blogs/mariano/archive/2006/03/27/293.aspx
Están trabajando duro, para hacer que los BAT sean componibles, no islas de desarrollo.
Alguien preguntó por EDRA (a.k.a. Shadowfax):
http://workspaces.gotdotnet.com/shadowfx
Se comentó que no continuará, porque no está alienado con otros caminos de Microsoft, como el nuevo Indigo, rebautizado Windows Communication Foundation. Es una lástima, era un producto con código a examinar, muy interesante. Tendré que seguir con mi AjServer
http://www.ajlopez.com/ajserver
:-):-)
Algo que comentó Eugenio, que me confirmó otros comentarios que tenía sobre el funcionamiento del grupo, es la metodología ágil que siguen para plantearse los próximos pasos de desarrollo. Se reunen el lunes por la mañana, deciden en qué van a trabajar durante la semana, y al final del viernes, publican lo producido. Es una interesante referencia, sobre el uso de ese tipo de metodologías.
Yo pregunté si iba alguna vez a haber un ORM (Object Relational Mapper) en los Blocks, o en los productos de Patterns and Practices, pero nones. Si alguna vez aparece, será desde los grupos de LINQ o de ObjectSpaces, pero no está en los planes de PAG encargarse de ese tema. No habrá un “NHibernate Application Block”.
Pueden visitar los blogs de Eugenio Pace y Matias Woloski, para mayor información:
http://blogs.msdn.com/eugeniop/
http://staff.southworks.net/blogs/matiaswoloski
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com/