in

DotNetMarche

.NET Framework User Group delle Marche

This Blog

Syndication

ExternalBlogs

October 2011 - Posts

  • CSDD–programming pornography

    In realtà la frase “programming pornography” la ho sentita da Greg Young durante il DDD Day, ma si allinea ad uno degli altri importanti concetti che sono emersi durante il campus DDD. In questo caso Alberto ha sottolineato il fatto di come nelle discussioni nei gruppi DDD troppo spesso si parla di tecnicismi e nella maggioranza dei casi si parla quasi sempre di ORM.

    Il concetto in questo caso è che il vantaggio maggiore del DDD è il metodo di approcciare il problema, ovvero cercare di sviscerare le logiche ed individuare le Entità che possono meglio modellare le logiche del dominio reale. Naturalmente, dato che l’approccio è principalmente teso alla “scoperta”, il primo modello difficilmente sarà quello giusto, per cui è necessario per lo meno nelle fasi iniziali farne più di uno e scegliere quello che “ci soddisfa maggiormente”, capendo poi che molto probabilmente verrà comunque cambiato. Il vero valore quindi è nella stesura del modello e non nella sua implementazione, per cui bisognerebbe cercare di dedicare più tempo alla modellazione, cercando di non farci “traviare” dagli aspetti tecnici.

    Purtroppo questo accade perché la community DDD è giovane, non esiste ancora da nessuna parte una “reference implementation” e difficilmente ne esisterà mai una, per questo bisogna accettare che in realtà il vero valore è nel modello e la realizzazione tramite codice è “programming pornography”, che probabilmente verrà rifatta per ogni progetto. Debbo dire che io sono il primo che lamento la mancanza in rete di “codice di esempio”, che possa aiutare a parlare concretamente di DDD con del codice sottomano, ma negli ultimi tempi sto realizzando che la parte implementativa è sicuramente importantissima, ma troppo spesso diventa dominante, quando invece la parte dominante dovrebbe essere il modello e la parte implementativa un corollario.

    Questo coincide con un raffreddamento del mio entusiasmo sugli ORM, che inizio a considerare talvolta degli “antipattern” che troppo spesso spostano la nostra attenzione lontano dalla ciccia. Nondimeno avere in rete delle implementazioni concrete e funzionanti di Event Sourcing, Domain Events e quant’altro, sicuramente gioverebbe a tutto il movimento, perché permetterebbe di poter dire “ok mi concentro nel modello, dato che comunque un paio di implementazioni con cui iniziare ad implementare il modello ci sono”.

    Gian Maria.

  • iLike – la intranet Italcementi premiata dall’osservatorio Enterprise 2.0

    Giovedi scorso si e’ tenuto a Milano il convegno annuale di presentazione dei risultati di ricerca dell’osservatorio Enterprise 2.0. Dati assolutamente da calare nell’ambito delle esperienze di adozione di strumenti di comunicazione e collaborazione aziendale, partner di successo e casi di adozione molto interessanti. Italcementi e’ stata premiata nella categoria Riche Enterprise Communication, l’intervento di
  • Eseguire VSDBCMD.exe senza avere il visual studio installato

    Per chi utilizza come me i database projects, e crea gli script di aggiornamento DB con il tool a riga di comando VSDBCMD.Exe, sicuramente può essere capitato di trovarsi strani errori durante l’esecuzione di vsdbcmd.exe.

    La causa principale è la mancanza di alcuni tool (primi tra tutti i componenti di SQL server) che sono necessari al tool per funzionare. In questo link trovate tutte le informazioni su tutti i componenti di .NET che dovete avere installato per fare girare vsdbcmd.exe in una macchina.

    Naturalmente vi ricordo anche un vecchio link già postato un paio di anni fa del tool di Benjamin Day che permette di utilizzare Vsdbcmd.exe con una comoda UI senza dovere installare visual studio nella macchina.

    Enjoy database projects.

    Gian Maria.

  • Bring social to content: relazioni a portata di click

    Condivido alcuni pensieri sul concetto di *social* (oramai di gran voga) all’interno di molte intranet aziendali. La maggior parte dei clienti che seguo, ne hanno una propria definizione comune, per la quale riporto di seguito il principale assunto: La contestualizzazione del dato, sulla base della relazione processo/ruolo/persona, stimola la formazione di informazione utile  in un determinato
  • I post nel muro di UGI latitano

    E’ tanto che volevo fare questo post, sostanzialmente ogni volta che vedo in google reader il quantitativo di post fatti nel muro di Ugi, non posso fare a meno di ricordare gli anni d’oro, quando realmente era quasi impossibile seguire il muro di Ugi, dato il numero di post che venivano fatti ogni giorno.

    Nel corso degli anni molti blogger hanno trasferito il proprio blog altrove, altri hanno semplicemetne smesso di bloggare, però io ho nostalgia di quegli anni, dove il muro di ugi era veramente bello pieno.

    Sarebbe bello che tutti quelli che hanno contribuito a far crescere il muro, ogni tanto magari facessero un cross-post anche nel muro di ugi, magari per i post più interessanti, o di interesse pubblico (Eventi, save the date, etc), perchè è un peccato veramente vedere che ci sono quattro o cinque post al giorno.

    alk.

  • E’ uscita la Visual Studio 2010 SP1 TFS Compatibility GDR

    A parte il nome che è veramente lungo :) potete trovare I dettagli nel blog di Brian Harry.

    Sostanzialmente si tratta di una serie di upgrade che permettono tra l’altro al client di VS2010 la connessinoe con un server TFS2011, ma contiene anche una interessantissima aggiunta a Microsoft Test Manager, la possibilità di inserire step multilinea.

    Buon fine settimana a tutti.

    Gian Maria.

  • HTML5 Video Web Part per SharePoint 2010

    E' con enorme piacere che vi presento il mio ultimo progettino (pensavo di farvene vedere prima un altro, ma non ho resistito :) ...una web part per SharePoint 2010 utile alla visualizzazione e la gestione di video secondo gli standard forniti dal...
  • Le prime opinioni su dev11 in uso reale

    Ho installato una macchina virtuale e ci ho messo dentro dev11, e solo i tool indispensabili (nhprof), poi ho inziato a lavorarci sui progetti reali, su quelli che uso tutti i giorni. Risultato: non lavoro quasi più con il VS2010 del sistema host.

    Le ragioni possono essere molte, prima di tutto con dev11 non ho installato Resharper, che è un tool veramente FANTASTICO, ma consuma veramente un mucchio di risorse, e sinceramente sto rivalutando se vale la pena tenerlo installato sulla macchina principale. La seconda ragione è che grazie al Remote Desktop di windows7, mi connetto in RDP sulla macchina virtuale e posso usare tutti i monitor proprio come se mi trovassi nella macchina host. La terza ragione è che dev11 ha molte cose interessanti, primo tra tutti un editor FANTASTICO per WPF (e ci credo, è stato portato quello di blend ) :).

    Il risultato è che l’editor XAML rispetto alla macchina host (dove ho vs2010 resharper e tanti altri ammenicoli) è almeno 5 volte più veloce e responsivo, in più ho pieno supporto per il binding da editor di proprietà.

    image

     

    Diciamo che mentre prima quando lavoravo su viste complesse avevo sempre VS2010 più Blend4 aperto, ora con dev11 Visual Studio per ora mi basta e mi avanza, dato che non sono comunque un designer, ma rimango un developer.

    Come  ultima considerazione, sebbene questa sia una dev preview, e non sia nemmeno beta, ci si lavora che è un piacere, e soprattutto non vi chiede di convertire I file di progetto, per cui potete lavorarci su qualsiasi solution di VS2010 senza alcun problema. Sto seriamente pensando di creare una Virtual Machine con solo i tool di sviluppo essenziali ed una magari con R#e gli altri addin da usare solo quando servono :).

    Gian Maria.

  • Sql Start 11/11/11 ad Ancona

    Con piacere vi segnalo un evento organizzato da UGISS l’11 novembre ad Ancona dedicato interamente all’argomento SQL Server. L’evento ha due track parallele, una dedicata più spiccatamente ai sistemisti e l’altra invece con un occhio di riguardo agli sviluppatori. In questa seconda track ho il piacere di avere anche io una sessione, dedicata ai database projects.

    Potete trovare tutti i dettagli e l’agenda nella pagina dell’evento, le registrazioni sono fatte invece da EventBrite a questa pagina.

    Vi attendiamo.

    Alk.

  • SQL Start – 11 novembre

    Con grande piacere condivido il link all’evento organizzato da UGISS che si terra’ in Ancona il giorno 11 novembre. L’evento illustrera le principali novita’ della nuova versione di SQL Server Denali, il tutto contornato da interventi dei maggiori esperti del settore. Ottima opportunita’ di formazione gratuita in pieno sapore di community: non mancate!
    Posted Oct 18 2011, 12:58 PM by nonaka
    Filed under: ,
  • CSDD–Aggregate root

    Dopo la prima lettura del libro di Evans (e vi assicuro che vale la pena di leggerlo almeno due volte), uno dei principi che maggiormente ho apprezzato è senza dubbio quello dell’AGGREGATE ROOT e degli AGGREGATES in generale.

    An aggregate is a cluster of associated objects that we treat as a unit for the purpose of data changes.

       

    L’importanza di questo pattern è la stessa del BOUNDED CONTEXT perchè porta alla riduzione della complessità, limitando la possibilità di instaurare relazioni tra gli oggetti. Il livello di granularità di frazionamento di questo pattern è minore del BOUNDED CONTEXT e può costituire essenzialmente un ulteriore livello di suddivisione. Partiamo quindi dal problema che vogliamo evitare, che è essenzialmente lo stesso mostrato nel post precedente.

    In domini complessi infatti, un singolo BOUNDED CONTEXT può essere molto complesso ed è deleterio permettere ad ogni oggetto di poter dialogare direttamente con qualsiasi altro oggetto nello stesso contesto, perchè si rischia di ricadere in un contesto cosi interconnesso che è poco gestibile. In pratica un AGGREGATE non è altro che un insieme di oggetti che rappresenta un’entità ben definita del dominio e l’AGGREGATE ROOT è l’oggetto che incapsula tutto il gruppo e ne costituisce la barriera di accesso. Non esiste una regola generale per individuare un AGGREGATE, ma in generale, se in un contesto abbiamo oggetti che da soli non hanno molto significato, ma acquistano significato presi assieme, questo potrebbe molto facilmente essere un aggregato.

    Se facciamo un esempio nel dominio di un ipotetico gioco di ruolo, potremmo dire che un Guerriero è composto da un insieme di oggetti come ad esempio le caratteristiche (forza, intelligenza, presenza, etc), dalle abilità (uso delle armi, salto, corsa, etc) e tutto questo insieme di oggetti costituisce la rappresentazione in questo BOUNDED CONTEXT dell’entità Guerriero. In questo caso infatti una caratteristica ad esempio non ha alcun senso se non associata al concetto di Guerriero e quindi ne costituisce una parte.

    Il primo vantaggio del’AGGREGATE è quello di presentare all’esterno un unico punto di contatto, chiamato AGGREGATE ROOT, in particolare esiste un principio che permette ad un repository di gestire solamente gli aggregate root. L’AGGREGATE ROOT diviene quindi un ulteriore astrazione che favorisce il concetto di incapsulamento. Cosi come una classe protegge il suo stato interno grazie ai metodi e fornisce una interfaccia o contratto che implementa la comunicazione con l’esterno, un’AGGREGATE ROOT incapsula una serie di oggetti che rappresentano l’aggregato..

    Grazie a questa astrazione è quindi possibile ridurre il numero di interconnessioni tra oggetti, perché queste ultime sono limitate agli AGGREGATE ROOT.

    L’aspetto del salvataggio è particolarmente importante, abbiamo infatti due assunti precisi

    1) Solo gli aggregate root possono essere gestiti tramite repository
    2) Ogni aggregato ha il suo repository per la gestione della persistenza.

    Questo significa che se un particolare aggregato è cosi complesso che ci viene facile salvarlo su un NoSQL, possiamo farlo senza problemi, altri aggregati potrebbero per esempio salvarsi semplicemente serializzando su disco, oppure chiamando un servizio esterno che li persiste on the cloud. Questa affermazione solitamente scatena ogni sorta di obiezioni, primo tra tutti il dire “come faccio I report?”, quando in una interfaccia debbo mostrare dei dati che vengono da aggregati differenti che prestazioni avrò se debbo prendere I dati da sorgenti eterogenee e poi magari aggregare in memoria? Purtroppo come in molte aree del DDD non esiste un’unica risposta, e dobbiamo capire se il vantaggio che abbiamo magari usando un NoSQL non ci fa perdere da altre parti.

    Una soluzione possibile è CQRS + DOMAIN EVENTS, ogni cambiamento significativo di un AGGREGATE ROOT genererà infatti un evento di dominio, che dovrà essere gestito da un Handler apposito che terrà aggiornate le classiche viste readonly su cui fare le query. Alcuni db NoSQL come raven hanno dei plugin che permettono automaticamente di tenere sincronizzato un database SQL con alcune proprietà degli oggetti salvati. L’obiettivo è quello di cercare di racchiudere la complessità del problema nel dominio e non nell’infrastruttura che ci sta attorno (leggasi ORM). La morale è, se debbo fare carte false per persistere una gerarchia complessa con un ORM, solo perché “tutto il resto è persistito con un ORM”, probabilmente non abbiamo necessariamente preso la strada giusta e vale la pena di pensare se un AGGREGATE o un intero BOUNDED CONTEXT non possano usare strategie differenti di persistenza.

    alk.

  • [AOP] UI e dintorni con PostSharp

    L’AOP ormai sta diventando un paradigma di programmazione sempre più diffuso specialmente nel mondo .NET dove strumenti come PostSharp , DotSpect ( Compile-time s tatic injection) e Spring.NET , Castle Windsor , Enterprise Library Policy Injection Application...
  • SharePoint Online si aggiorna! A partire dal 20 ottobre

    Ho appena ricevuto la mail d'avviso riguardo i prossimi aggiornamenti di SharePoint Online (Office 365). Dal prossimo 20 ottobre , fino alla fine di novembre , Microsoft di preoccuperà di aggiornare tutte le istanze di SharePoint Online per ognuno...
  • Osservatorio Enterprise 2.0 – 27 ottobre 2011

    Metisoft dal 2010 è uno dei sostenitori delle attività degli Osservatori ICT & Management della School of Management del Politecnico di Milano, che vogliono offrire una fotografia accurata e continuamente aggiornata sugli impatti che le tecnologie dell’informazione e della comunicazione (ICT) hanno in Italia su imprese, pubbliche amministrazioni, filiere, mercati, ecc. In particolare, Metisoft supporta
  • WPC 2011: tre ore su SharePoint Online

    Con enorme piacere parteciperò anche quest'anno a WPC, la conferenza organizzata da Overnet sulle ultime tecnologie di sviluppo e gli ultimi prodotti di casa Microsoft che si terrà nei giorni 22, 23 e 24 novembre 2011 presso il Centro Congressi Milanofiori...
More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems