<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>Architettura</title>
        <link>http://blogs.ugidotnet.org/janky/category/Architettura.aspx</link>
        <description>Architettura</description>
        <language>it-IT</language>
        <copyright>Giancarlo Sudano</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>ASP, SaaS e Software plus Services e le piattaforme future</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/12/06/asp-saas-e-software-plus-services-e-le-piattaforme-future.aspx</link>
            <description>&lt;p&gt;Stuzzicato da un post su &lt;a href="http://www.guisa.org"&gt;Guisa&lt;/a&gt; (che adesso non trovo :-), ma anche dal fatto di aver sentito direttamente da un po di persone che non c'è una chiara percezione delle differenze tra queste definizioni, ci scrivo su qualcosa.&lt;/p&gt;
&lt;p&gt;Partiamo dalla definizione più vecchie: &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;OnPremise Installation&lt;br /&gt;
&lt;/strong&gt;E' un &lt;u&gt;Modello di Delivery&lt;/u&gt; che tutti conosciamo. Applicazioni, Line of Business, installate sui server della propria azienda. Per quanto le applicazioni in questo modo siano controllabili, customizzabili, rappresentano un costo per l'azienda in termini di manutenzione e personale specializzato. La controparte di OnPremise è un delivery OnDemand, cioè l'outsourcing delle applicazioni. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;ASP (Application Service Provider) &lt;br /&gt;
&lt;/strong&gt;E' la prima forma di delivery OnDemand. E qui facciamo un salto indietro anche di dieci anni. I principi di ASP partivano dal presupposto di spostare le applicazioni scritte per le aziende in host (o sarebbe meglio dire in "house") di terze parti in modo da liberarsi dell'infrastruttura necessaria per la gestione/manutenzione. E' una forma intermedia di outsourcing delle applicazioni. &lt;br /&gt;
Idea non malvagia ma fondamentalmente i problemi con questo modello rimanevano due: &lt;br /&gt;
&lt;u&gt;Dal lato del provider&lt;/u&gt;: Si arriva ad avere DataCenter disomogeneri, ammassi di server con diverse caratteristiche e alti costi di manutenzione. &lt;br /&gt;
&lt;u&gt;Dal lato dell'azienda enterprise consumer&lt;/u&gt;: La gestione dell'applicativo hostato in ASP necessità di risorse con skill specializzato sempre all'interno dell'azienda. Si è spostata l'infrastruttura ma non si risolve totalmente il problema.   &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;SaaS (Software as a Service) &lt;br /&gt;
&lt;/strong&gt;Veniamo ai tempi più moderni. Software as a Service è ancora un modello di Delivery. &lt;br /&gt;
Alcune aziende cominciano a fornire servizi specializzati totalmente OnDemand. Servizi hostati e manutenuti dal provider stesso. Questo è un modello più completo di outsourcing delle applicazioni. &lt;br /&gt;
Sia come installazione che come manutenzione giornaliera e operazioni tecniche di supporto. &lt;br /&gt;
Con SaaS, il software può anche essere reso disponibile a settori di mercato ampiamente differenti: Home consumer, small business, o enterprise. &lt;br /&gt;
Un esempio: &lt;br /&gt;
&lt;u&gt;Applicazione OnPremise&lt;/u&gt;: Microsoft Exchange all'interno dell'azienda &lt;br /&gt;
&lt;u&gt;Applicazione SaaS&lt;/u&gt;: Microsoft Exchange fornito da un provider di terze parti. &lt;br /&gt;
Questo è l'outsourcing. &lt;br /&gt;
Applicazione OnDemand e gestione dell'applicazione OnDemand. &lt;br /&gt;
E' un modello che funziona? Secondo gli analisti del mercato, AMR, Gartner, Forrester Research, non solo funziona ma avrà un trend di crescita molto forte nei prossimi anni, contro una diminuzione delle installazioni OnPremise. &lt;br /&gt;
Non è difficile capire il perchè del successo. &lt;br /&gt;
Le aziende non affrontano più grossi investimenti iniziali per i software, ma pagano OnDemand, con un ROI immediato. &lt;br /&gt;
Microsoft fornisce ad esempio il suo CRM come SaaS, SalesForce.com fa la stessa cosa. Segnatevi bene questo termine: "&lt;strong&gt;in the cloud&lt;/strong&gt;" perchè lo sentirete spesso dire nei prossimi anni. I provider e le software house cominciano a spostare le proprie applicazioni "from OnDemand Installation, to the cloud". &lt;br /&gt;
Ma si può pensare a un modello SaaS puro...diciamo al 100%? Può un'enterprise avere tutto in outsourcing? Ci sono cmq dei problemi da affrontare, ad esempio la customizzazione, o l'identità e la sicurezza. Nascono già adesso e si incrementeranno in futuro applicazioni "composite" che uniscono servizi &lt;strong&gt;OnPremise&lt;/strong&gt;, e &lt;strong&gt;in the cloud.&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;S+S (Software plus Services)&lt;br /&gt;
&lt;/strong&gt;Differenza fondamentale! questo non è un modello di delivery. Comprende piuttosto la scrittura di applicativi o line of business "mashup" sia con servizi OnPremise che con servizi in the cloud. &lt;br /&gt;
Esempio: &lt;br /&gt;
&lt;u&gt;Applicazione S+S&lt;/u&gt;: Microsoft Exchange all'interno dell'azienda e &lt;a href="http://www.microsoft.com/exchange/services/default.mspx"&gt;Microsoft Exchange Hosted Services&lt;/a&gt;. &lt;br /&gt;
Non sono la stessa applicazione, una volta OnPremise, una volta in the cloud. Gli hosted services offrono servizi aggiuntivi e non condividono una linea di codice con Exchange. &lt;br /&gt;
S+S è un "&lt;a href="http://www.microsoft.com/Presspass/exec/steve/2007/05-09Software2007.mspx"&gt;brand&lt;/a&gt;" di Microsoft. &lt;br /&gt;
La definizione "sotto sotto" è proprio: applicativi/servizi/LOB compositi con servizi OnPremise e in the cloud per prendere il meglio dei due mondi. &lt;br /&gt;
Il fatto di mettere un brand ha assolutamente senso! E vi sarà chiaro tra un po. &lt;br /&gt;
Errori che ho visto in giro: &lt;br /&gt;
1. Accostare &lt;strong&gt;S+S&lt;/strong&gt; a &lt;strong&gt;SaaS&lt;/strong&gt; considerandoli sinomini. &lt;strong&gt;No!&lt;/strong&gt; S+S è un modello di scrittura di applicazioni, SaaS è un modello di delivery. Tutti e due investono anche architetturalmente il disegno degli applicativi ma non facciamo errori grossolani. &lt;br /&gt;
2. Accostare &lt;strong&gt;S+S&lt;/strong&gt; con gli &lt;strong&gt;Smart Client&lt;/strong&gt;. &lt;strong&gt;No!&lt;/strong&gt; Altro errore grossolano, gli Smart Client sono applicazioni che possono girare sui Client anche in assenza di connessione e con capacità di sincronizzazione...tutt'altra premessa.&lt;/p&gt;
&lt;p&gt;Come dicevo prima gli &lt;strong&gt;Hosted Exchange Services&lt;/strong&gt; forniscono servizi aggiuntivi, e non condividono linee di codice con &lt;strong&gt;Exchange&lt;/strong&gt; stesso. Stessa cosa dicasi con i &lt;a href="http://biztalk.net/default.aspx"&gt;BizTalk Services&lt;/a&gt; rispetto a &lt;a href="http://www.microsoft.com/biztalk/default.mspx"&gt;Biztalk Server&lt;/a&gt;. Questo è un importante punto di riflessione:&lt;br /&gt;
Non esiste allo stato attuale un modello unificato per costruire applicazioni che rispondano alle premesse di S+S. &lt;br /&gt;
E questo è esattamente la visione strategica di &lt;a href="http://www.microsoft.com/soa/products/oslo.aspx"&gt;Oslo&lt;/a&gt;. Cioè una piattaforma orientata allo sviluppo di applicazioni S+S, dalla &lt;u&gt;modellazione&lt;/u&gt;, alla &lt;u&gt;gestione del ciclo&lt;/u&gt; di vita al &lt;u&gt;deploy finale&lt;/u&gt;. &lt;br /&gt;
&lt;br /&gt;
Ecco perchè un brand nuovo. S+S. &lt;br /&gt;
Perchè questo è il terreno dove i grandi vendor si stanno dando battaglia e dove vedremo scontri titanici nei prossimi due anni. &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/90125.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/12/06/asp-saas-e-software-plus-services-e-le-piattaforme-future.aspx</guid>
            <pubDate>Thu, 06 Dec 2007 10:36:35 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/12/06/asp-saas-e-software-plus-services-e-le-piattaforme-future.aspx#feedback</comments>
            <slash:comments>1374</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/90125.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/90125.aspx</trackback:ping>
        </item>
        <item>
            <title>Qualche indiscrezione sull'imminente libro di Martin Fowler</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/11/27/qualche-indiscrezione-sullimminente-libro-di-martin-fowler.aspx</link>
            <description>&lt;p&gt;Tratterà dei DSL (Domain Specific Language). &lt;br /&gt;
Leggete &lt;a href="http://www.infoq.com/news/2007/11/martin-fowler-dsl-book"&gt;qui&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/89974.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/11/27/qualche-indiscrezione-sullimminente-libro-di-martin-fowler.aspx</guid>
            <pubDate>Tue, 27 Nov 2007 17:48:22 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/11/27/qualche-indiscrezione-sullimminente-libro-di-martin-fowler.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/89974.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/89974.aspx</trackback:ping>
        </item>
        <item>
            <title>Nuovi Mastering Objectway: Architetture e Web</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/08/28/87994.aspx</link>
            <description>La stagione scorsa, il progetto &lt;strong&gt;Mastering&lt;/strong&gt; di Objectway (visto nell'ottica delle due giornate di formazione) è andato benissimo con i tre mastering di NHibernate. Quest'anno si riparte alla grande, con due grossi appuntamenti nel mese di Ottobre.&lt;br /&gt;
&lt;br /&gt;
Il 2/3 Ottobre terrò un:     &lt;br /&gt;
&lt;a href="http://www.objectway.it/Events/EnterpriseArchitecture07/Default.aspx"&gt; Mastering .NET Enterprise Architecture&lt;/a&gt;     &lt;br /&gt;
e il 29/30:     &lt;br /&gt;
&lt;a href="http://www.objectway.it/Events/EnterpriseWebApplications07/Default.aspx"&gt; Mastering .NET Enterprise Web Application&lt;/a&gt;     &lt;br /&gt;
&lt;br /&gt;
Una premessa fondamentale: sono due corsi basati fortemente su architetture a servizi secondo i principi SOA.      &lt;br /&gt;
Il primo si concentra sulle &lt;span&gt;architetture applicative in generale&lt;/span&gt;,     e il secondo si focalizza sul applicazioni web di tipo enterprise fortemente "scalabili"     in complessità.     &lt;br /&gt;
&lt;br /&gt;
Ho voluto evitare la strada dello studio e dell'applicazione dei classici design pattern. &lt;br /&gt;
Verrà data invece molta importanza agli attuali framework:     &lt;br /&gt;
&lt;strong&gt; Windows Communication Foundation&lt;/strong&gt; per il disegno orientato ai servizi&lt;br /&gt;
&lt;strong&gt; Windows Workflow Foundation&lt;/strong&gt; per modellare e orchestrare i processi di business&lt;br /&gt;
&lt;strong&gt; ORM&lt;/strong&gt; per costruire Layer di accesso ai dati basati su Contesti di Persistenza&lt;br /&gt;
&lt;strong&gt; Spring.NET&lt;/strong&gt; per l'inversione di controllo e l'Aspect Oriented Programming &lt;br /&gt;
E sugli impatti architetturali derivanti dalla loro adozione.&lt;br /&gt;
&lt;br /&gt;
Fondamentale: &lt;strong&gt;Software Factories&lt;/strong&gt;!     &lt;br /&gt;
Queste ultime sono un mezzo molto potente per far si che le figure di &lt;strong&gt;Solution         Architect&lt;/strong&gt; possano:     &lt;br /&gt;
&lt;br /&gt;
1. Preparare piani di implementazione per gruppi anche numerosi di sviluppatori.     &lt;br /&gt;
2. Imporre regole e guidelines architetturali da far rispettare durante tutto il ciclo di vita applicativo.     &lt;br /&gt;
3. Creare progetti non rigidi, ma estendibili e manutenibili.      &lt;br /&gt;
4. Consentire il Test su tutte le parti dell'applicativo (non solo unit test! ma     fare architetture che permettano test web efficaci).&lt;br /&gt;
&lt;br /&gt;
Parleremo quindi di di &lt;strong&gt;Web Client Software Factory, e di Web Service Software         Factory&lt;/strong&gt;.&lt;br /&gt;
Non mancherà neanche qualche "giusto" cenno al ruolo di architetto e del team di     lavor, secondo &lt;strong&gt;Microsoft Solution Framework. &lt;/strong&gt;     &lt;br /&gt;
&lt;br /&gt;
Come di consueto....si pranza tutti al Picahna, con le mie due colleghe (gnocche) &lt;span style="font-weight: bold;"&gt;Elena&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;Gilda&lt;/span&gt; che dietro le quinte organizzano la comunicazione e la logistica dei vari mastering.&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/87994.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/08/28/87994.aspx</guid>
            <pubDate>Tue, 28 Aug 2007 19:05:53 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/08/28/87994.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/87994.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/87994.aspx</trackback:ping>
        </item>
        <item>
            <title>JAOO 2007 in Danimarca</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/07/01/84153.aspx</link>
            <description>&lt;p&gt;Questa sarebbe rigorosamente da non perdere, per architetti e sviluppatori...&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.jaoo.dk/conference/"&gt;JAOO 2007&lt;/a&gt; Si svolgerà dal 23 al 28 Settembre, in Danimarca (ottimo motivo per andare a prescindere dalla conferenza...:-))&lt;/p&gt; &lt;p&gt;La &lt;a href="http://www.jaoo.dk/speakers/"&gt;lista degli speaker&lt;/a&gt; fa realisticamente paura, stiamo parlando infatti dei migliori "guru" mondiali, giusto per nominarne qualcuno:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Frank Buschmann&lt;/strong&gt;, &lt;strong&gt;Jimmy Nilsson&lt;/strong&gt;, &lt;strong&gt;Jeff Sutherland&lt;/strong&gt; e &lt;strong&gt;Ken Schwaber&lt;/strong&gt;, &lt;strong&gt;Robert Martin&lt;/strong&gt;, &lt;strong&gt;Martin Fowler&lt;/strong&gt;, &lt;strong&gt;Eric Evans&lt;/strong&gt;, &lt;strong&gt;Erik Meijer&lt;/strong&gt;, &lt;strong&gt;Ted Neward&lt;/strong&gt;...(ne devo dire altri??)&lt;/p&gt; &lt;p&gt;Ci sono circa 6 track in parallelo al giorno. Giusto per far venire invidia&amp;nbsp;queste sono le &lt;a href="http://www.jaoo.dk/tracks/"&gt;track&lt;/a&gt;.&lt;br&gt;E devo dire con molto piacere che brilla la track &lt;a href="http://www.jaoo.dk/tracks/show_track.jsp?trackOID=45"&gt;LINQ&lt;/a&gt;, con un bellissimo &lt;strong&gt;Linq for Domain Driven Design&lt;/strong&gt; finale di Jimmy Nilsson.&lt;/p&gt; &lt;p&gt;SPE-TTA-CO-LO.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/84153.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/07/01/84153.aspx</guid>
            <pubDate>Sun, 01 Jul 2007 11:29:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/07/01/84153.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/84153.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/84153.aspx</trackback:ping>
        </item>
        <item>
            <title>Domain Model e compromessi tecnologici</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/06/29/84090.aspx</link>
            <description>&lt;p&gt;Approfitto di questo &lt;a href="http://blogs.ugidotnet.org/janky/archive/2007/06/27/83578.aspx#83629"&gt;commento&lt;/a&gt; sul mio &lt;a href="http://blogs.ugidotnet.org/janky/archive/2007/06/27/83578.aspx"&gt;post&lt;/a&gt; dell'altro ieri, per scrivere due parole, perchè l'argomento meritava di essere approfondito.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/duz"&gt;Mario&lt;/a&gt; dice:&lt;/p&gt; &lt;p&gt;"...L'unico passaggio su cui non concordo proprio in pieno, se l'ho capito bene, è questo: &lt;br&gt;&lt;em&gt;...ma si vede che cmq in ogni caso, qualche "pezzo" di pulizia del modello di dominio, in un modo o nell'altro bisogna cederlo.&lt;/em&gt;&lt;br&gt;Mi ricordo l'illuminante chiacchierata con te sulle collection; quando hai detto che utilizzare IList&amp;lt;T&amp;gt; non era un vincolo di NH ma la scelta migliore di design ci ho pensato su 10 secondi e ti ho risposto "Vero! Hai ragione!" e da allora nelle mie entities compare IList&amp;lt;T&amp;gt;..." &lt;p&gt;Cioè si parla di come alcuni O/RM possano incidere in qualche modo sul disegno delle classi. &lt;p&gt;Il mio pensiero è questo (cerco di espanderlo): &lt;p&gt;Sia con &lt;strong&gt;NHibernate&lt;/strong&gt; che con &lt;strong&gt;Linq to SQL&lt;/strong&gt;, ma con qualsiasi sistema di persistenza c'è la necessità di adattare (con impatti magari diversi) il proprio &lt;strong&gt;Domain Model&lt;/strong&gt; in modo che possa funzionare a puntino. &lt;p&gt;&lt;em&gt;&lt;u&gt;Chiavi primarie&lt;/u&gt;&lt;br&gt;&lt;/em&gt;In un mondo puramente teorico, uno potremme immaginare di modellare delle &lt;strong&gt;Entity&lt;/strong&gt;, senza l'informazione della &lt;strong&gt;chiave primaria&lt;/strong&gt;. Ques'ultima è un dato che serve solo ed esclusivamente al &lt;strong&gt;sistema di storage&lt;/strong&gt;. Anche &lt;strong&gt;NHibernate&lt;/strong&gt; potrebbe funzionare senza chiavi primarie (pratica sconsigliatissima).&lt;br&gt;Il &lt;strong&gt;contesto di persistenza&lt;/strong&gt; (la sua session) potrebbe, una volta tirati su gli oggetti, tenere in memoria&amp;nbsp;l'accoppiata &lt;strong&gt;Entity/Chiave&lt;/strong&gt;. La responsabilità della gestione di una chiave che arriva dal database (o anche&amp;nbsp;generata sul client poco importa)&amp;nbsp;non dovrebbe essere della entità, poichè quest'ultima dovrebbe essere ignorante al modo in cui viene persistita.&lt;br&gt;Ma ovviamente i contraccolpi sarebbero pesantissimi. I contesti di persistenza sarebbero costretti a &lt;strong&gt;sopravvivere&lt;/strong&gt; a tutta la &lt;strong&gt;conversazione&lt;/strong&gt; applicativa, e questo (in alcuni casi) non è per niente una bella soluzione. &lt;p&gt;&lt;em&gt;&lt;u&gt;Gestione dei Proxy&lt;/u&gt;&lt;br&gt;&lt;/em&gt;Se il &lt;strong&gt;Domain Model&lt;/strong&gt; è costituito da un grafo complesso in cui alcuni dei nodi non vengono caricati immediatamente perchè non servono allo scenario corrente, devo disegnare le classi in modo che una &lt;strong&gt;factory&lt;/strong&gt; ci possa costruire sopra dei &lt;strong&gt;proxy&lt;/strong&gt;. E quindi devo evitare &lt;strong&gt;sealed&lt;/strong&gt;, usare metodi &lt;strong&gt;virtual&lt;/strong&gt; oppure inventarmi delle interfacce.&amp;nbsp;Cambio il disegno, e l'unico motivo per cui lo faccio è perchè devo abilitare il mio domain model alla persistenza.&lt;br&gt;&lt;br&gt;&lt;em&gt;&lt;u&gt;Identità&lt;br&gt;&lt;/u&gt;&lt;/em&gt;&lt;strong&gt;NHibernate&lt;/strong&gt; per garantire l'identità (così come espressa nel CLR) entity che&amp;nbsp;hanno chiavi composite impone che la entity in questione implementi i metodi &lt;strong&gt;Equals()&lt;/strong&gt; e &lt;strong&gt;GetHashcode()&lt;/strong&gt;. Ma ancora è un problema di persistenza. Non di dominio. &lt;p&gt;Avrei altri esempi in termini di serializzazione, stati e tracking, ma non mi dilungo.&lt;/p&gt; &lt;p&gt;In pratica, ci sono molte problematiche di &lt;strong&gt;persistenza&lt;/strong&gt;&amp;nbsp;che intaccano in un modo o nell'altro il disegno della propria entity, su questo non vi è dubbio. Poi ci possono essere soluzioni più o meno eleganti. L'uso di &lt;strong&gt;EntityRef&lt;/strong&gt; su &lt;strong&gt;Linq to SQL&lt;/strong&gt; per esempio non è una soluzione malvagia. E' la rappresentazione del concetto di &lt;strong&gt;proxy&lt;/strong&gt; o &lt;strong&gt;wrapper&lt;/strong&gt;, e non è riferita al sistema di persistenza. Vedo molto meno l'uso di &lt;strong&gt;EntitySet&lt;/strong&gt;. Al suo posto avrei visto una soluzione un po più alla &lt;strong&gt;NHibernate&lt;/strong&gt;, cioè lasciare che la gente scriva le proprie entity usanto interfacce e poi iniettando la collection corretta a seconda dello scenario (Devo ancora approfondire...magari qualcosa si può fare).&lt;/p&gt; &lt;p&gt;La conclusione è che,&amp;nbsp;non necessariamente si deve essere totalmente "puristi". &lt;br&gt;Bisogna saggiamente valutare il &lt;strong&gt;valore aggiunto&lt;/strong&gt; apportato ad esempio da una chiave primaria su una entity, o dell'aggiunta di virtual per garantire la creazione di proxy, o di qualsiasi altra cosa, e bilanciarlo con la pulizia concettuale del domain model, arrivando ne più ne meno ad un &lt;strong&gt;compromesso tecnologico&lt;/strong&gt;.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/84090.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/06/29/84090.aspx</guid>
            <pubDate>Fri, 29 Jun 2007 17:46:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/06/29/84090.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/84090.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/84090.aspx</trackback:ping>
        </item>
        <item>
            <title>Application Platform Roadshow...c'&amp;egrave; anche GUISA</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/03/29/74195.aspx</link>
            <description>&lt;p&gt;L'evento di martedì prossimo (&lt;a href="http://www.microsoft.com/italy/approadshow/default.mspx"&gt;Application Platform Roadshow&lt;/a&gt;)&amp;nbsp;organizzato da Microsoft,&amp;nbsp;sarà di&amp;nbsp;sicuro molto invitante e dedicato a professionisti IT e Dev..si parla di OLAP e Business Intelligence la mattina e di AJAX al pomeriggio...niente male...&lt;br&gt;In più ci sarà anche un desk per promuovere l'iniziativa di &lt;a href="http://guisa.org"&gt;GUISA&lt;/a&gt;...mi troverete li, a chiacchierare di &lt;em&gt;non_solo_architettura.&lt;br&gt;&lt;/em&gt;Io sarò li tutto il giorno...ovviamente visto che ci saranno centinaia di persone...l'appuntamento è allo &lt;strong&gt;Skyline&lt;/strong&gt; di Milano (le info sono tutte nella scheda di iscrizione)...ahhh...ovviamente è gratuito...&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.microsoft.com/italy/approadshow/images/platformRS.jpg"&gt; &lt;br&gt;&lt;br&gt;Vediamo se&amp;nbsp;riesco pure&amp;nbsp;in serata&amp;nbsp;ad andare a&amp;nbsp;vedere il "&lt;strong&gt;7 e l'8"&lt;/strong&gt;...il film dei miei &lt;a href="http://www.ficarraepicone.it/"&gt;compaesani&lt;/a&gt;...&lt;/p&gt; &lt;p&gt;Ci si vede li!&lt;/p&gt; &lt;p&gt;PS:&lt;/p&gt; &lt;p&gt;Adesso scappo che i soliti picciotti aggregati in quel di milano per lavoro che rispondono al nome di &lt;strong&gt;Bochicchio D.&lt;/strong&gt;, &lt;strong&gt;Golia R.&lt;/strong&gt;&amp;nbsp;e &lt;strong&gt;Mberù&lt;/strong&gt;&amp;nbsp; mi aspettano per andare a farci una cena a base di....non so ancora cosa...ma sarà a quintali...&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/74195.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/03/29/74195.aspx</guid>
            <pubDate>Thu, 29 Mar 2007 21:30:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/03/29/74195.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/74195.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/74195.aspx</trackback:ping>
        </item>
        <item>
            <title>"Linq for NHibernate"...prima o poi doveva accadere</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73557.aspx</link>
            <description>&lt;p&gt;Lo dicevo qualcosa come due mesi fa al webcast che abbiamo fatto assieme io e &lt;a href="http://www.geniodelmale.info"&gt;Lorenzo&lt;/a&gt;,&lt;/p&gt;
&lt;p&gt;la famosa &lt;strong&gt;Sessione di Domande e Risposte&lt;/strong&gt; (in cui tra l'altro ci siamo divertiti un casino...), che per come stavano andando le cose avevo intravisto una possibile sinergia tra Linq e NHibernate ed ecco la slide di allora:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/janky/1901/r_linq_nh_sinergia.jpg"&gt; &lt;/p&gt;
&lt;p&gt;Mi sarebbe piaciuto scriverci su qualcosa...ma in fondo in fondo...sapevo che "&lt;a href="http://www.ayende.com"&gt;uno a caso&lt;/a&gt;" ci sarebbe arrivato prima...e quindi &lt;strong&gt;Linq for NHibernate&lt;/strong&gt; comincia a prendere forma...&lt;/p&gt;
&lt;p&gt;Avere &lt;strong&gt;Linq&lt;/strong&gt; nel linguaggio e una trasformazione delle &lt;strong&gt;expression&lt;/strong&gt; in clausole &lt;strong&gt;HQL&lt;/strong&gt; o &lt;strong&gt;Criteria&lt;/strong&gt; (poco importa) potrebbe voler dire il &lt;u&gt;declino&lt;/u&gt; di qualsiasi forma di &lt;strong&gt;QueryObject&lt;/strong&gt; &lt;strong&gt;Pattern&lt;/strong&gt;, che tra l'altro è veramente tanto impegnativo. Disegnare un modello che&amp;nbsp;comprenda anche &lt;strong&gt;inclusion&lt;/strong&gt; (termine Linq che in NH ha un equivalente al FETCH di HQL o al SetFetch dei Criteria) e &lt;strong&gt;projection&lt;/strong&gt;&amp;nbsp;non è per niente facile.&lt;/p&gt;
&lt;p&gt;Come al solito...mitico!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/73557.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73557.aspx</guid>
            <pubDate>Thu, 22 Mar 2007 16:27:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73557.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/73557.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/73557.aspx</trackback:ping>
        </item>
        <item>
            <title>Nuovo nato: Hibernate Shards</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73540.aspx</link>
            <description>&lt;p&gt;Purtroppo solo in casa Java...ma chissà&amp;nbsp;che non si pensi ad un porting appena possibile.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.hibernate.org/414.html"&gt;Hibernate Shards&lt;/a&gt; è un&amp;nbsp;framework&amp;nbsp;(costruito su Hibernate)&amp;nbsp;che permette di lavorare con le partizioni orizzontali dei database, il tutto con le interfacce abituali SessionFactory, Session, Criteria e Query.&lt;/p&gt; &lt;p&gt;Permette di sfruttare la distribuzione dei dati in qualsiasi configurazione di shards. C'è anche il supporto per shards virtuali (in modo che le shard fisiche possano essere rifattorizzate in qualsiasi modo).&lt;/p&gt; &lt;p&gt;Tutta la logica è ovviamente a plugin come nella buona tradizione Hibernate, con HQL e Transazioni distribuite.&lt;/p&gt; &lt;p&gt;Ecco l'attuale stack di tecnologie Hibernate...&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.hibernate.org/hib_images/hibernate_stacks.gif"&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/73540.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73540.aspx</guid>
            <pubDate>Thu, 22 Mar 2007 14:44:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73540.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/73540.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/73540.aspx</trackback:ping>
        </item>
        <item>
            <title>Entity Framework e la spedizione punitiva all'MVP Summit</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73515.aspx</link>
            <description>&lt;p&gt;Quando ho letto che i miei blogger preferiti (Jeremy Miller,&amp;nbsp;Scott Bellware, Jeffrey Palermo...e altri&amp;nbsp;"ragazzacci" di CodeBetter) avevano organizzato una "&lt;a href="http://codebetter.com/blogs/sam.gentile/archive/2007/03/14/ADO.NET-3-_2D00_-Entity-Framework-without-Persistance-Ignorance.aspx"&gt;spedizione punitiva&lt;/a&gt;"&amp;nbsp;e si sono presi a parte tutto il team di &lt;strong&gt;Linq for Entities&lt;/strong&gt; per spiegare loro&amp;nbsp;un po come va il mondo (giusto qualche lezioncina di &lt;strong&gt;NHibernate...&lt;/strong&gt;quoto: "...teaching them about NHibernate...") mi è venuto troppo da ridere!&lt;/p&gt; &lt;p&gt;Una delle cose che da più fastidio della versione attuale di EF&amp;nbsp;è che&amp;nbsp;non rispetta neanche quel minimo principio della &lt;strong&gt;persistence ignorance&lt;/strong&gt;. Classi base da cui ereditare, classi specifiche per le associazioni e interfacce specifiche per il tracciamento dei cambiamenti.&lt;br&gt;&lt;br&gt;Sam Gentile dice che questo è il momento di dare i feedback...io&amp;nbsp;qualche feedback&amp;nbsp;sto cominciando&amp;nbsp;a scriverlo,&amp;nbsp;e nel blog del team (e anche nel forum)&amp;nbsp;hanno già annunciato che la prossima versione non dovrebbe più appoggiarsi a classi generate&amp;nbsp;ma dovrebbe utilizzare lo stile POCO. Almeno così &lt;a href="http://blogs.msdn.com/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx"&gt;dice&lt;/a&gt; Erick Thompson&amp;nbsp;program manager di ADO.NET&amp;nbsp;in risposta ad un mio commento sulle &lt;strong&gt;query polimorfiche&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Ora...sinceramente...dico io...&lt;br&gt;Ma con&amp;nbsp;tanti ORM in giro che hanno&amp;nbsp;anni di esperienza alle spalle&amp;nbsp;e che&amp;nbsp;queste cose le fanno "giusto" da qualche&amp;nbsp;"lustro"...mi verrebbe da dire...ma quelli del team dove vivono? Va beh...&lt;br&gt;&lt;br&gt;Esco da una serie di corsi che mi hanno piuttosto stancato e da ieri sto cominciando a lavorare su Orcas proprio in termini di EF.Il mio lavoro sarà di ispezione dello stato attuale, dei pro e contro rispetto a quelli che sono i sistemi attuali di ORM.&lt;/p&gt; &lt;p&gt;Sto costruendo una tabella di feature per il confronto con altre tecnologie, alimentata da un po di esperienza nel campo degli ORM...&lt;/p&gt; &lt;p&gt;Vi tengo aggiornati.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/73515.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73515.aspx</guid>
            <pubDate>Thu, 22 Mar 2007 11:23:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/03/22/73515.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/73515.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/73515.aspx</trackback:ping>
        </item>
        <item>
            <title>Sulle traccie di DLinq</title>
            <link>http://blogs.ugidotnet.org/janky/archive/2007/02/16/70944.aspx</link>
            <description>&lt;p&gt;Qualche altra news al &lt;a href="http://blogs.msdn.com/adonet/"&gt;blog ufficiale&lt;/a&gt; del team di ADO.NET...&lt;br&gt;In Orcas verrà introdotto un nuovo data provider (&lt;strong&gt;EntityClient&lt;/strong&gt;) per fornire un gateway per le query fatte sulle Entity.&lt;br&gt;&lt;br&gt;Questo client utilizzerà un suo linguaggio definito (&lt;strong&gt;Entity SQL&lt;/strong&gt;) e saranno disponibili i soliti Connection, Command, Parameter, e DataReader tanto cari a tutti i membri della famiglia dei dataprovider .net come SqlClient, OracleClient etc.&lt;/p&gt; &lt;p&gt;La tendenza sembra per ora la stessa:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Linq for SQL&lt;/strong&gt;, &lt;strong&gt;Linq for Entities&lt;/strong&gt;,&amp;nbsp;come questo provider non gestiscono in modo automatico i DML (Data Manipulation Language) sul Db. &lt;br&gt;Niente insert/update/delete. In pratica coprono solo la parte della interrogazione pura. &lt;br&gt;Ok...viene si fornito un oggetto di Contesto (DataContext, ObjectContext a seconda dei vari linq) in cui però a scrivere l'SQL del database o a chiamare la SP dobbiamo essere noi. &lt;br&gt;&lt;br&gt;Da quello che ho capito, Orcas non avrà niente di simile (o forse solo con l'ObjectContext e gli EDM?...).&lt;br&gt; DLinq servirà sicuramente come strumento per costruire dei Data Access Layer (&lt;a href="http://blogs.ugidotnet.org/raffaele/"&gt;Raf&lt;/a&gt; era di questa idea già da un pezzo).&lt;br&gt;Io aggiungo&amp;nbsp;che servirà solo nel mapping &lt;strong&gt;unidirezionale&lt;/strong&gt; dal modello relazionale al modello a oggetti e non viceversa. &lt;br&gt;Più che tool per scrivere DAL, io lo vedo come tool per scrivere interrogazioni, solo una nicchia di operazioni gestite dal un&amp;nbsp;ipotetico&amp;nbsp;DAL...e da qui ci vedo una possibile sinergia con tool ORM veri e propri.&lt;/p&gt; &lt;p&gt;Ecco &lt;a href="http://blogs.msdn.com/adonet/archive/2007/02/14/entity-client.aspx"&gt;qui&lt;/a&gt; la fonte.&lt;br&gt;&lt;br&gt;Da prendere tutto con le pinze...visto che si parla di CTP.&lt;br&gt;Visto come ci hanno abitutati con&amp;nbsp;Longhorn e Atlas...sarebbe già una bella cosa che non lo taglino prima del rilascio...gh...gh...gh...&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/janky/aggbug/70944.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Giancarlo Sudano</dc:creator>
            <guid>http://blogs.ugidotnet.org/janky/archive/2007/02/16/70944.aspx</guid>
            <pubDate>Fri, 16 Feb 2007 18:06:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/janky/archive/2007/02/16/70944.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/janky/comments/commentRss/70944.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/janky/services/trackbacks/70944.aspx</trackback:ping>
        </item>
    </channel>
</rss>