October 2006 - Posts
Gracias a Tobias Meyer, y la iniciativa de Alan Cyment, tenemos un curso adicional de Scrum en Argentina, en Noviembre. El curso que se había organizado para esas fechas, se llenó, así que ahora hay una segunda edición.
Este es el mensaje original del bueno de Tobias:
Hi all.
The previous CSM course filled up quickly, so please get in touch soon if you are interested in enroling for this course.
Regards,
Tobias Mayer
Tuve la oportunidad de tomar el primer curso que dictó Tobias en la Argentina, el pasado Agosto, y fue excelente. Totalmente recomendable, pueden ver comentarios sobre el curso en
El segundo curso que dictará por estos lares, que ya está completo, se detalle en:
Nos leemos!
Angel "Java" Lopez
http;//www.ajlopez.com/
Una vieja ambición mía, era publicar lo que doy en mis cursos, de una forma accesible, para todos los interesados. Uno de los problemas de los cursos presenciales, es que deben ser en un lugar físico, en un determinado horario. No todos pueden asistir, y para los asistentes y el instructor, el tiempo es limitado, tanto para explicar como para preguntar y dar ejemplos o tratar temas dudosos.
Por eso, he comenzado a pasar a texto en línea, en mi sitio, mi curso de Java, que por ahora estoy completando, lección a lección, paso a paso, como si fuera un blog. Esta estrategia, de armarlo despacio pero sin pausa, espero que me lleve a completarlo, con el temario que tengo pensado: desde comienzos del lenguaje, herramientas, compilación y ejecución, variables, tipos, clases y herencia, librería de clases, entrada/salidad, con uso de red, acceso a bases de datos, e iniciación a JavaServer Pages. Luego vendrá un curso de JavaServer Pages.
El curso (y otros, sobre .NET, PHP, desarrollo de software en general), va tomando forma desde:
http://www.ajlopez.net/cursos
Espero que les sean útiles, y poder llegar a más gente que sólo a un grupo que puede asistir a los cursos presenciales.
Angel "Java" Lopez
http://www.ajlopez.com/
En un curso, me preguntaron cuáles libros recomendaría para estudiar JSP y Struts. Como en tantos temas, hay multitud de libros, pero rescataría algunos que tengo en mi biblioteca:
Para JSP, tengo a
Pro JSP
Third Edition
Simon Brow, Sam Dalton, Dan Jepp, Dave Johnson, Sing Li, Matt Raibe
de editorial Apress. Es un libro que trata varios temas, desde los tags de JSP, pasando por la Java Standard Tag Library, la escritura de tags (el método clásico, y los nuevos métodos), JSP 2.0, el Expression Language, la configuración, seguridad de aplicaciones, servlets, variables disponibles, filtros, etc. Realmente es muy completo.
Ahora hay una cuarta edición, que no he revisado, pero abarca JSP 2.1.
En cuanto a Struts, la aplicación MVC de la gente de Jakarta, pueden consultar el
Pro Jakarta Struts
Second Edition
John Carnell with Rob Harrop
Es de la misma editorial Apress, y abarca la versión 1.2. Lo interesante es que plantea el tema de patrones, y explica cuáles fueron utilizados en el diseño de Struts. Abarca todos los temas, desde configuración de Struts, hasta validaciones en el cliente. Emplea tanto DAOs que van contra la base, como un backend basado en EJB. Lo aísla usando Service Locator y Business Delegate. Muy interesante todo lo que abarca.
No vi que estuvieran editados en español. Pero podemos encontrar
JSP Ejemplos Prácticos
de editorial Avaya, de Andrew Patzer
También es interesante el libro de JSP 2 del bueno de Agustín Froufe, de editorial Alfaomega-Rama, pero no he visto que se actualizara a las últimas versiones del tema.
Angel "Java" Lopez
http://www.ajlopez.com/
Las próximas dos semanas, cada miércoles estaré en el Grupo de Usuarios Microsoft de Argentina, en Buenos Aires, dando unas charlas sobre Arquitectura .NET, explicando paso a paso cuál es la razón, motivación y consecuencia de algunos patrones de arquitectura y diseño, que aparecen en los desarrollos .NET. Creo que es una forma mejor de explicar esos temas, creando uno o más ejemplos, que viendo cada patrón por separado. Son jornadas con costo, pueden ver más información en
http://www.mug.org.ar/Eventos/2311.aspx
Repito acá el contenido:
Con la aparición de .NET (en varias versiones), el framework y la posibilidad de hacer aplicaciones Windows, Web, distribuidas o no, con acceso a distintas bases de datos, se plantea el tema de como se estructura una aplicación .NET, de forma que sea extensible y mantenible.
Los temas de arquitectura son varios, pero lo principal es repartir las responsabilidades en distintas partes del sistema.
Durante el curso, partiendo de ejemplos que no tienen conceptos de arquitectura, veremos como surgen y para que sirven distintos patrones y estilos arquitectónicos, como la arquitectura de capas, el modelo de dominio, la independencia de la presentación de la lógica de negocios, la independencia de la base, y el problema y soluciones de persistencia.
También se implementara, sobre un ejemplo, una implementación Windows Forms, vs. otra implementación ASP.NET. Luego, visitando alguna tecnología .NET como servicios web, se implementara una aplicación donde la presentación es remota del resto de la aplicación.
DETALLES DE CONTENIDOS:
· Un ejemplo sin Arquitectura.
· Definición de Arquitectura.
· La arquitectura de capas.
· Primera separación.
· Presentación.
· Resto del Sistema.
· Patrón Service Layer.
· Objetos para nuestro Negocio.
. Entidades de Negocio.
· Modelo de Dominio.
. El problema de la persistencia.
· Data Access Objects.
· Object Relational Mapping.
· Objetos en la presentación.
. Value Objects.
· Datos entre capas.
· Capa remota.
. Data Transfer Object.
· Tecnologías: Web Service, Remoting, Windows Communication Framework.
· Independencia del Transporte.
· Cambiando la presentación.
· Ejemplo Windows.
· Ejemplo Web.
Como siempre, la presentación y los ejemplos, quedarán en mi sitio, en el material correspondiente al curso, cualquiera podrá consultarlos.
Es la segunda vez que doy esta charla en el año. Estoy pasando algunos apuntes a texto, y serán publicados en mi sitio, porque creo que simplemente el código o la presentación, no alcanzan para transmitir las ideas y discusiones planteadas. Pasaré en limpio lo que grabe de esta charla, con los ejemplos, y quedará publicado en varias páginas, en lo que espero sea la primera implementación pública de un curso, apunte mío, albergado usando ajlearning , un sistema en PHP que estoy usando privadamente en mi sitio.
Será la primera de estas experiencias a pasar a texto. Creo que es el formato ideal para que la gente interesada en ese tema, y que no pueda asistir, pueda tener algo del contenido explicado.
Angel "Java" Lopez
http://www.ajlopez.com/
Los que asistieron a alguna de mis charlas, saben que llega el momento en el que presento, tanto tenga relación con el tema tratado como que no, a mi proyecto preferido, mi generador de código a partir de un modelo, AjGenesis.
Desde hace unos años lo vengo mejorando y probando, y me ha dado muchas satisfacciones. Lo uso en cada nuevo proyecto que encaro, así que estoy cumpliendo con la máxima "comerse la comida del perro" (que podría entenderse, aplicado a programación, a que el desarrollador debe usar sus propios productos). Tanto el año pasado (2005) como en éste, he tenido la oportunidad de dar charlas solamente dedicadas al tema de generación de código con ese proyecto. Y ahora, vienen dos charlas, con las que estoy entusiasmado.
Una, el viernes que viene, en Buenos Aires, organizada por el Club de Programadores (con costo), más información en:
http://www.clubdeprogramadores.com/cursos/CursoMuestra.php?Id=287
Otra, el .. de noviembre, en la ciudad de Santa Fe, aquí en mi pais Argentina. Tendré el gusto de volver a esa ciudad, donde hay un polo informático importante, promovido desde la actividad académica y apoyado por el gobierno. Organizado por el Microsoft User Group y la Universidad Tecnológica Nacional; es gratuito, tienen información en:
http://www.mug.org.ar/Eventos/2369.aspx
Espero poder transmitir a los asistentes a esta charla, la idea que subyace a trabajar con generación de código, tanto con AjGenesis como con el utilitario que elijan, y en especial, destacar la importancia del modelo. A diferencia del concepto de "software factories" (aunque tiene sus puntos en común), con AjGenesis se puede encarar la generación de artefactos de texto (no solamente código), desde un modelo, o de varios modelos. Por ejemplo, para entender la necesidad de más de un modelo, en los ejemplos a presentar habrá un modelo independiente de la plataforma (cómo es el sistema, las entidades y relaciones que maneja), y otro, dependiente de la plataforma (base de datos a usar, lenguaje, presentación web), que pueden combinarse. Así, desde un modelo independiente de la plataforma, se puede generar la misma solución para PHP, para VB.NET, o para VB.NET con NHibernate. Se pueden generar código de capas, que cumpla con los patrones de Business Entities, Business Components, o que siga los lineamientos de Evans, con Entities, Repositories, Services, y una capa de Application y otra de Infrastructure.
O lo que venga mañana. El modelo independiente sigue estando, es cuestión de adaptar las plantillas y procesos de generación, para que produzca lo que necesitamos, en la tecnología que precisemos.
Angel "Java" Lopez
http://www.ajlopez.com/
En estos dias, he ordenado algunos enlaces y recursos sobre el Windows Workflow Foundation, el motor de workflow de Microsoft que es parte del nuevo .NET 3.0 en desarrollo. Más información sobre WWF desde
http://msdn.microsoft.com/workflow
El motor puede ejecutarse sobre cualquier instalación de .NET 2.0. Lo pueden bajar del enlace de arriba. Consiste en nuevos namespaces (System.Workflow.*), y utilitarios como el Workflow Designer, que pueden utilizarse desde Visual Studio 2005.
El sitio donde se encuentran recursos y ejemplos es:
http://wf.netfx3.com/
Si quiere estudiar sobre este motor de workflow, puedo sugerir algunos enlaces:
Windows Workflow Reference
http://msdn2.microsoft.com/en-us/netframework/aa663322.aspx
Windows Workflow Overview
http://msdn2.microsoft.com/en-us/netframework/aa663340.aspx
La documentación del producto en línea
Windows Workflow Foundation General Reference
http://msdn.microsoft.com/library/en-us/WF_GeneralRef/html/150ef247-47e4-4ce1-bd4d-14a901ce269e.asp
La lista detallada de clases
Windows Workflow Foundation Class Library
http://msdn.microsoft.com/library/en-us/WF_ClassLibrary/html/WF_ClassLibrary_Reference_Home.asp
Artículos de Dino Esposito, con ejemplos en WinForms y ASP.NET:
Cutting Edge: Windows Workflow Foundation
http://msdn.microsoft.com/msdnmag/issues/06/03/cuttingedge/default.aspx
Cutting Edge: Windows Workflow Foundation, Part 2
http://msdn.microsoft.com/msdnmag/issues/06/04/cuttingedge/default.aspx
Hosting Windows Workflow
http://www.odetocode.com/Articles/457.aspx
Este artículo explica como albergar a WWF dentro de una aplicación.
De TheServerSide.net:
Enterprise _NET Community Manage Application Processes with Windows Workflow Foundation
http://www.theserverside.net/tt/articles/showarticle.tss?id=ManageAppProcesses
Will work for process: Create and run WF workflows
http://www.theserverside.net/tt/articles/showarticle.tss?id=WorkforProcess
Un nuevo artículo de Microsoft:
Web Service Workflows Deploy Distributed Business Processes With Windows Workflow And Web Services — MSDN Magazine, October 2006
http://msdn.microsoft.com/msdnmag/issues/06/10/WebServiceWorkflows/default.aspx
WWF puede persistir el estado de sus instancias y de su historia. Una interesante discusión en:
WWF Persistance Status
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=774811&SiteID=1
Se pueden escribir workflows basados en máquinas de estado:
State Machines In Windows Workflow
http://www.odetocode.com/Articles/460.aspx
Bart De Smet tiene una categoría de blog sobre WWF, con artículos:
Getting started with Windows Workflow Foundation (WF)
http://community.bartdesmet.net/blogs/bart/archive/2006/08/27/4278.aspx
How to make a workflow dynamic - Part 1
http://community.bartdesmet.net/blogs/bart/archive/2006/08/28/4322.aspx
How to make a workflow dynamic - Part 2
http://community.bartdesmet.net/blogs/bart/archive/2006/08/31/4369.aspx
Exposing a workflow through a web service
http://community.bartdesmet.net/blogs/bart/archive/2006/09/03/4388.aspx
Exposing a workflow via WCF
http://community.bartdesmet.net/blogs/bart/archive/2006/09/04/4392.aspx
Tom Lake, trabajó en el WWF SDK, y mantiene un blog con cantidad de información, acerca del uso de XAML en workflows, creación de nuevas actividades, y WWF en general:
Assorted Windows Workflow XAML activation and how to use it
http://blogs.msdn.com/tomlake/archive/2006/05/02/588756.aspx
Switch Activity
http://blogs.msdn.com/tomlake/archive/2006/08/30/Switch-activity.aspx
Basics of Working with Custom Types in Workflow
http://blogs.msdn.com/tomlake/archive/2006/07/17/668507.aspx
Do you want to invoke another workflow but you won’t know which one until runtime
http://blogs.msdn.com/tomlake/archive/2006/07/14/666287.aspx
Do you need to launch another process from your workflow
http://blogs.msdn.com/tomlake/archive/2006/07/14/666159.aspx
How to set activity property from a custom input form
http://blogs.msdn.com/tomlake/archive/2006/06/05/618185.aspx
Couple of custom activities that you can use to synchronize branches of a ParallelActivity
http://blogs.msdn.com/tomlake/archive/2006/05/04/590225.aspx
Have you had problems using the FileWatcher sample in a StateMachineWorkflow or WhileActivity
http://blogs.msdn.com/tomlake/archive/2006/05/02/588575.aspx
How to send data to a workflow
http://blogs.msdn.com/tomlake/archive/2006/06/02/614492.aspx
Project template for XAML Activation Console Application
http://blogs.msdn.com/tomlake/archive/2006/05/18/601271.aspx
Examples of using Persistence and Tracking in ASP_NET
http://blogs.msdn.com/tomlake/archive/2006/05/17/600143.aspx
Using XAML activation in ASP_NET with a StateMachineWorkflow
http://blogs.msdn.com/tomlake/archive/2006/05/08/592554.aspx
Dentro del motor de workflow, viene un motor de reglas, muy flexible. Algunos enlaces interesantes:
Introduction to the Windows Workflow Foundation Rules Engine
http://msdn.microsoft.com/windowsvista/reference/default.aspx?pull=/library/en-us/dnlong/html/intWF_FndRlsEng.asp
Windows Workflow: Rules and Conditions
http://www.odetocode.com/Articles/458.aspx
WWF: Comparing WWF rules and the Microsoft Business Rule Engine
http://www.topxml.com/BizTalk-Rule-Engine/re-16296_WWF–Comparing-WWF-rules-and-the-Microsoft-Business-Rule-Engine.aspx
WF: Comparing WF rules and the Microsoft Business Rule Engine
http://geekswithblogs.net/cyoung/articles/56488.aspx
Rules Examples
Ejemplos de Microsoft, para destacar:
External Ruleset Demo (beta 2.2)
http://wf.netfx3.com/files/folders/rules_samples/entry309.aspx
The External Ruleset Toolkit demonstrates how to store rulesets in an external SQL Server database and load them at runtime for use by a Policy activity.
Rules Driven UI
http://wf.netfx3.com/files/folders/rules_samples/entry819.aspx
This sample will demonstrate this capability by using rulesets to pre-populate fields, do cross validation and various calculations on a target Windows Form. We will also show rules features such as forward chaining in this sample.
Sobre motores de reglas en general:
Use Rules In Your Applications
http://www.codeproject.com/useritems/Rules_In_Your_Apps.asp
A Rules Engine class library with source code and documentation
Using a Rules Engine to separate Business rules from the application
http://www.codeproject.com/useritems/Using_a_Rules_Engine.asp
Algunas discusiones interesantes en los foros de Microsoft:
Re Trouble with WebService and Persistence - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=292683&SiteID=1
Using the Rules Engine with complex data containers - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=320688&SiteID=1
Re 3 layered architecture - Where to house rules - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=263825&SiteID=1
Más enlaces sobre WWF
How to lock a workflow instance using SqlWorkflowPersistenceService?http://blogs.msdn.com/sonalic/archive/2006/04/28/586498.aspx
Managing Workflow’s Lifecycle
http://blogs.msdn.com/moustafa/archive/2006/03/02/542459.aspx
Microsoft Windows Workflow Foundation (WWF)
http://www.kainos.com/index.php?option=com_knowledge&task=view&id=29&Itemid=116
Ajax based Workflow Monitor
http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,a423e010-647b-4a32-8dfe-071bf6f43705.aspx
Angel “Java” Lopez
http://www.ajlopez.com/en
Hola gente!
Hace unos días, un "thread" de la excelente lista de .NET del Microsoft Users Group de Argentina:
Ejecutar codigo desde variable
me recordó un tema de mi "backlog" para AjGenesis, mi proyecto de generación de código. Y ayer, el bueno de Juan Pablo García, me envió por "email" el enlace a
Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp
Es lo que quiero agregar al AjGenesis (y quizas en alguna parte de SaasyLongTail, el proyecto en el que participo en SW): que un template pueda ser escrito en C# o VB.NET, de la siguiente forma: genero un texto
using...
using...
class MyTemplate {
public void Evaluate(AjGenesisContext context) {
... y aquí generar el código del template
}
}
Si el template es
<h1>Prueba</h1>
<h2>${Project.Name}</h2>
<#
for (int k=1; k<=6; k++) {
#>
<h2>Mensaje <#= k #></h2>
<#
}
#>
deberia generar algo como
Hola gente!
Solo como curiosidad, para exponer qué hago cada semana, puedo publicar hoy esta agenda esperada de la semana que comienza:

Para justificar que no posteo todos los días... 
Referencias
MUG = Microsoft Users Group
Club de Programadores
Southworks
Angel "Java" Lopez
http://www.ajlopez.com/