<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>VSX</title>
        <link>http://blogs.ugidotnet.org/adrian/category/3185.aspx</link>
        <description>VSX</description>
        <language>it-IT</language>
        <copyright>Adrian Florea</copyright>
        <managingEditor>adrian_florea@yahoo.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Un'API generico a provider per i metadata dei vari ORM</title>
            <link>http://blogs.ugidotnet.org/adrian/archive/2008/05/03/unapi-generico-a-provider-per-i-metadata-dei-vari-orm.aspx</link>
            <description>&lt;p&gt;Via &lt;a href="http://weblogs.asp.net/fbouma/archive/2008/05/01/dynamic-data-and-3rd-party-o-r-mappers-is-a-fact.aspx"&gt;questo post&lt;/a&gt; di &lt;a href="http://weblogs.asp.net/fbouma/"&gt;Frans Bouma&lt;/a&gt; ho scoperto sotto il namespace &lt;strong&gt;System.Web.DynamicData.ModelProviders&lt;/strong&gt; dell'assembly &lt;strong&gt;System.Web.DynamicData.dll&lt;/strong&gt; che arriva con l'ultima release della preview di &lt;a href="http://code.msdn.microsoft.com/dynamicdata"&gt;ASP.NET Dynamic Data&lt;/a&gt;, un'API generico composto da 4 provider per i metadata dei vari ORM (non solo Microsoft): &lt;strong&gt;DataModelProvider&lt;/strong&gt;, &lt;strong&gt;TableProvider&lt;/strong&gt;, &lt;strong&gt;ColumnProvider&lt;/strong&gt; ed &lt;strong&gt;AssociationProvider&lt;/strong&gt;. Questo unifica in buona misura le varie API che espongono i metadata degli ORM, per esempio &lt;strong&gt;MetaTable&lt;/strong&gt;, &lt;strong&gt;MetaDataMember&lt;/strong&gt;, &lt;strong&gt;MetaAssociation&lt;/strong&gt; nel caso di LINQ to SQL, oppure quella piu' complessa dell'Entity Framework: &lt;strong&gt;EntitySet&lt;/strong&gt;, &lt;strong&gt;EdmMember&lt;/strong&gt;, &lt;strong&gt;NavigationProperty&lt;/strong&gt;, etc. Frans ha gia' scritto un &lt;em&gt;model provider&lt;/em&gt; per il suo &lt;a href="http://www.llblgen.com/"&gt;LLBLGen Pro&lt;/a&gt;, sarebbe bellissimo averne uno anche per &lt;a href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt;. E poi mi piacerebbe in futuro vedere questa API staccata dal ASP.NET Dynamics Data con cui non dovrebbe avere tanto in comune.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/adrian/aggbug/92497.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adrian Florea</dc:creator>
            <guid>http://blogs.ugidotnet.org/adrian/archive/2008/05/03/unapi-generico-a-provider-per-i-metadata-dei-vari-orm.aspx</guid>
            <pubDate>Sat, 03 May 2008 13:53:11 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/adrian/comments/92497.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/adrian/archive/2008/05/03/unapi-generico-a-provider-per-i-metadata-dei-vari-orm.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/adrian/comments/commentRss/92497.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/adrian/services/trackbacks/92497.aspx</trackback:ping>
        </item>
        <item>
            <title>Un DSL per i mapping O/R?</title>
            <link>http://blogs.ugidotnet.org/adrian/archive/2008/03/03/91491.aspx</link>
            <description>Guardando in questi giorni &lt;a href="http://tools.hibernate.org/"&gt;Hibernate Tools&lt;/a&gt;, mi e' piaciuta molto l'idea che sta alla base della la sua architettura: il mapping viene rappresentato da un'istanza del &lt;em&gt;metamodello&lt;/em&gt; di Hibernate (classe &lt;strong&gt;org.hibernate.cfg.Configuration&lt;/strong&gt; o derivate, equivalente di &lt;strong&gt;NHibernate.Cfg.Configuration&lt;/strong&gt;) e da questo &lt;em&gt;modello&lt;/em&gt; vengono generati i vari artefatti tramite cosiddetti &lt;em&gt;exporter&lt;/em&gt; (per esempio &lt;strong&gt;hbm2java&lt;/strong&gt;, &lt;strong&gt;hbm2ddl&lt;/strong&gt;, &lt;strong&gt;hbm2hbmxml&lt;/strong&gt;, etc), che non sono altro che classi che derivano da &lt;strong&gt;org.hibernate.tool.hbm2x.GenericExporter&lt;/strong&gt; e che, insieme a dei template FreeMarker, definiscono in modo straordinariamente flessibile la parte di generazione codice/artefatti. Quindi, al posto della &lt;strong&gt;PO&lt;font color="#ff0000"&gt;J&lt;/font&gt;OExporter&lt;/strong&gt; potremmo avere, perche' no, anche una &lt;strong&gt;PO&lt;font color="#ff0000"&gt;C&lt;/font&gt;OExporter&lt;/strong&gt; per il domain model C#. Sarebbe interessante replicare in NHibernate un'infrastruttura simile, soprattutto adesso quando &lt;a href="http://blogs.msdn.com/garethj/archive/2008/01/31/fun-use-of-t4-to-generate-strongly-typed-web-navigation.aspx"&gt;la parte di generazione codice via template T4 si trova gia' inclusa in VS2008&lt;/a&gt;. E poi, se tutto questo viene generato da un'istanza di &lt;strong&gt;Configuration&lt;/strong&gt;, ci vuole solo un passo per creare un DSL grafico (con l'immenso aiuto di &lt;a href="http://msdn2.microsoft.com/en-us/library/bb126235.aspx"&gt;DSL Tools&lt;/a&gt;) che rappresenti il mapping (N)Hibernate. E un po' quello che hanno fatto in Java con, per esempio, &lt;a href="http://www.exadel.com/exadelstudio/help/#orm2"&gt;Exadel Studio Pro&lt;/a&gt;, diventato adesso parte di &lt;a href="http://www.jboss.com/products/devstudio"&gt;Jboss Developer Studio&lt;/a&gt;. Ma poi, i concetti di mapping sono quasi independenti dagli engine e quindi, perche' non pensare a un tool visuale capace di risolvere la parte mapping per piu' ORM?&lt;img src="http://blogs.ugidotnet.org/adrian/aggbug/91491.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adrian Florea</dc:creator>
            <guid>http://blogs.ugidotnet.org/adrian/archive/2008/03/03/91491.aspx</guid>
            <pubDate>Tue, 04 Mar 2008 11:50:22 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/adrian/comments/91491.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/adrian/archive/2008/03/03/91491.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/adrian/comments/commentRss/91491.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/adrian/services/trackbacks/91491.aspx</trackback:ping>
        </item>
        <item>
            <title>L'OR Designer e' stato scritto con DSL Tools</title>
            <link>http://blogs.ugidotnet.org/adrian/archive/2008/01/21/90790.aspx</link>
            <description>Lo sapevate che l'Object Relational Designer e la parte di generazione di codice per le classi LINQ to SQL in VS2008 sono state scritte utilizzando &lt;a href="http://www.microsoft.com/vstudio/dsltools"&gt;Microsoft DSL Tools&lt;/a&gt; che fa parte di &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en"&gt;VS SDK&lt;/a&gt;? - l'ho scoperto tramite il Reflector mentre &lt;a href="http://www.domainspecificdevelopment.com/"&gt;studiavo&lt;/a&gt; l'API di questo potentissimo framework che e' DSL Tools: tra le classi che derivano da &lt;strong&gt;Microsoft.VisualStudio.Modeling.ModelElement&lt;/strong&gt;, classe fondamentale per la rappresentazione degli elementi di un domain model, si trovano anche le classi internal dell'OR Designer. Questo dovrebbe dare piu' fiduccia a chi inizia o valuta di &lt;a href="http://msdn.com/vsx"&gt;estendere Visual Studio&lt;/a&gt; per un certo DSL utilizzando DSL Tools! - parti complesse del VS stesso iniziano ad essere sviluppate con questo framework.&lt;img src="http://blogs.ugidotnet.org/adrian/aggbug/90790.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adrian Florea</dc:creator>
            <guid>http://blogs.ugidotnet.org/adrian/archive/2008/01/21/90790.aspx</guid>
            <pubDate>Mon, 21 Jan 2008 14:29:06 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/adrian/comments/90790.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/adrian/archive/2008/01/21/90790.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/adrian/comments/commentRss/90790.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/adrian/services/trackbacks/90790.aspx</trackback:ping>
        </item>
    </channel>
</rss>