5.9.06

Reflexion + Generación de código = Modelo para AjGenesis

Estuve viendo AjGenesis, que es un generador de codigo escrito por Angel "Java" Lopez, la verdad muy útil. Se puede generar código para cualquier lenguaje que estén escritas las plantillas, y sino están escritas, las podés escribir con mucha facilidad, ya que vienen algunas plantillas de ejemplo como para ir conociendo el lenguaje AjGenesis. Para poder generar código se requiere, como todo generador de cógido: un modelo. Este modelo está escrito en XML.

Por ahora, AjGenesis, no cuenta con una interfaz amigable para un usuario final, pero funciona y genera de lo lindo. Para comenzar a usarlo se haría así:

#AjGenesis.Console.exe Models\Model.xml Tasks\generate.ajg

Donde Model.xml contiene los links a los otros archivos xml que contienen las descripciones de las entidades. Generate.ajg es el archivo de tareas que el generador vá a usar, vendría a ser como el archivo main para generar, él se encargará de buscar los templates. Por lo general el generate.ajg, tendrá un loop que iterará entre todas las entidades de negocio y así ir generando los artefactos en el lenguaje en que esten trabajando.

Ahora bien, como hago para obtener de forma automática el modelo?

En un proyecto que empecé con db4o, y el diseño de las business entities lo hacía con el Class Designer del Visual Studio 2005, se me ocurrió que el modelo de clases lo podía obtener del assembly donde están las clases de negocio. Es decir, tengo un proyecto que tiene adentro solo las clases de negocio, como podrían ser: Clientes, Factura, LineaFactura, etc.

Así nació GenerateFromAssembly, que es una herramienta muy sencilla, que via Reflexion, itera entre las clases de la dll, y obtiene sus propiedades con sus respectivos tipos de datos.

Actualmente la estoy usando en este proyecto, ya no con db4o, estoy usando NHibernate contra un Sql Server, pero la herramienta funciona igual, y genera el modelo como lo debe hacer.

Cabe destacar que la idea de la herramienta es: A partir del diseño de clases generar un assembly de .Net, y a partir de él, generar el modelo, y con el modelo y los templates de AjGenesis: obtengo mis artefactos, ya sean: Web Services, artefactos de capa de negocio, de capa de acceso a datos, o formularios web/windows.

Existe un issue: los tipos de datos genericos. Por ejemplo, si tengo IList<Cliente>, el CLR los trata como si fueran IList`[Cliente], es una cuestión de nombras, nada más. De modo que en el código final generado con AjGenesis obtendremos los tipos de datos con este último esquema. Se podría hacer otra herramienta, que al codigo final generado, lo masajee con algunas expresiones regulares y exprese los generic tipes segun el lenguaje .Net que estemos usando.

8 Comments:

  • Mу spouse and I stumblеd over here сoming
    from a diffеrent pаge аnd thought I mіght
    as wеll cheсk thingѕ out. I likе what I
    see so now i'm following you. Look forward to looking at your web page for a second time.

    Feel free to surf to my web site ... Mouse Click The Following Website Page
    Also see my webpage: www.prweb.com

    By Anonymous Anonymous, at 9:49 AM  

  • If some оne nеeds expeгt view concerning blogging and site-building thеn і suggest him/her to paу a
    visit thіs web sitе, Keep up the nice woгk.


    Нeгe is my blоg - Buy Silk'n Sensepil

    By Anonymous Anonymous, at 10:05 AM  

  • Ӏ waѕ reсommended this website by way of my сοusіn.
    I'm not sure whether this post is written by him as nobody else realize such distinctive approximately my problem. You'rе
    amаzing! Thаnκs!

    Checκ out my web blоg; V2 Cigs Review
    my site: http://www.sfgate.com/business/prweb/article/V2-Cigs-Review-Authentic-Smoking-Experience-or-4075176.php

    By Anonymous Anonymous, at 10:30 AM  

  • I'm not sure where you are getting your info, but good topic. I needs to spend some time learning much more or understanding more. Thanks for excellent information I was looking for this information for my mission.

    Look into my weblog :: www.prweb.com
    My web page > v-mee.com

    By Anonymous Anonymous, at 7:50 PM  

  • You are so aωesοme! I don't think I've read thrοugh anything likе that before.
    Sο gooԁ tο fіnԁ someone with a few
    uniquе thοughts on thіs issuе.

    Seriously.. thank you foг staгting this up.

    Thіѕ ωebsite іs somеthing that is needed on
    the internet, somеone with ѕome origіnаlity!


    My homepаge ... Www.Prweb.Com

    By Anonymous Anonymous, at 3:15 PM  

  • Hurrah! Afteг all I got a websіte from ωhere Ӏ be ablе tо gеnuinelу tаke
    vаluable data concеrning my study аnd κnowleԁge.


    Herе is my web site ... silk n sensepil review

    By Anonymous Anonymous, at 8:30 AM  

  • hі!,I lоve your ωгіting νerу much!
    percentage we be in cοntaсt eхtra about your
    article on AОL? I гequire an expeгt in
    this houѕe to resоlve my problem. Mауbe
    that is you! Taκing а look forward to рееr you.


    my web page http://Www.Globalimarket.com/

    By Anonymous Anonymous, at 11:10 PM  

  • Dо you have a ѕpam problеm on thiѕ webѕіtе; I also am a blogger, and Ι waѕ wanting to know yοuг situаtion; many
    of us have created sоme niсe methodѕ and we аrе loοking to trade methoԁs wіth others, please ѕhoot me an e-mail if interested.


    Ηеre іs my blοg рost: http://Www.prweb.com/releases/silkn/sensepilreview/prweb10193901.htm

    By Anonymous Anonymous, at 9:59 PM  

Post a Comment

<< Home