Invest in people before investing in tools

Il blog di Matteo Baglini
posts - 118, comments - 95, trackbacks - 697

OpenSource

FluentNHibernate, UserType e UserTypeConvention

Sviluppando applicazioni con NHibernate capita spesso di avere l’esingenza di creare uno UserType per mappare in modo particolare una classe. In questo post non mi interessa descrivere come realizzare uno UserType , basta fare una ricerca su google per “essere sommersi” di guide, quello che voglio mostrare è la semplicità di mapping di uno UserType tramite FluentNHibernate e la classe generica UserTypeConvention<TUserType>. Supponiamo di avere le classi Money e MoneyUserType, rispettivamente la classe da persistere e la definizione dello UserType, il mapping consiste semplicemente in qusto snippet di codice. 1: public class...

posted @ venerdì 2 ottobre 2009 17:31 | Feedback (1) | Filed Under [ OpenSource ]

WPF Functional Testing With White

(@ Dario: accetto la sfida!!! ) Nel mio ultimo post ho annunciato il rilascio di un framework per effettuare test funzionali per applicazioni desktop in maniera del tutto automatica. Dario ha accettato la mia richiesta rispondendo con un bel post su TestApi e Input Injection. Tutto ciò mi ha messo voglia di provare a rifare il solito test da lui proposto, però utilizzando white, così possiamo confrontare i due framework. Cominciamo!! Prima di tutto lo screenshot della mia applicazione, non è proprio identica a quella di Dario, ma va benissimo! Come sappiamo, lo...

posted @ giovedì 18 dicembre 2008 23:23 | Feedback (2) | Filed Under [ .NET OpenSource Agile ]

WPF UI Test Framework

Ivo Manolov annumcia sul proprio blog il rilascio di un tool open source per automatizzare il test della UI sia essa in WPF pittosto che WinForm. Sempre sul suo blog potete leggere il primo post guida del tool. Da questi post ho scoperto che esiste un blog su MSDN dedicato al testing di WPF. Esisteva già un tool open surce simile si chiama white ed anche questo è hostato su CodePlex. Technorati Tag: UnitTest,UI Test

posted @ martedì 16 dicembre 2008 17:02 | Feedback (3) | Filed Under [ .NET OpenSource Agile ]

Google C++ Mocking Framework

Ricordate il Google C++ Test Framework? Bene! Adesso il Team di Google ha rilasciato anche un framework di Mocking per C++. Vediamo se mi sarà utilie nella solita applicazione C++ che ho menzionato nel post passato. Technorati Tag: Mocks,UnitTest,TDD

posted @ martedì 16 dicembre 2008 16:45 | Feedback (1) | Filed Under [ OpenSource Agile ]

[Spring.NET #33] Spring.Aop, Advice

Rappresenta la modalità di intercettamento di un motodo e quindi la modalità di intruduzione del codice. I tipi di Advice sono quattro: AroundAdvice: implementa l'interfaccia IMethodInterceptor e permette il massimo controllo su un metodo dato che possiamo aggiungere logica primo e dopo l'invocazione del metodo target. Questo è  l'Advice più potente ma anche il più richioso, dato che possiamo dimenticare di chiamare il metodo Proceed() che rappresenta l'invocazione del metodo target. BeforAdvice: implementa l'interfaccia IBeforAdvice e permette di introdurre codice soltanto prima dell'invocazione del metodo target. AfterReturningAdvice: implementa...

posted @ sabato 10 maggio 2008 11:42 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #32] Spring.Aop, Pointcut e Advisor

Un Pointcut definisce una regola di individuazione di un Joinpoint. Spring.NET offre diverse implementazioni di Pointcut, forniti come moduli indipendendi, implementati come singole entità in modo da renderli riutilizzabili ed intersecabili per diversi Advice. Ogni Pointcut implementa l'interfaccia IPointcut, la quale tramite i due membri ITypeFilter e IMethodMatcher permette di filtrare in base al tipo ed alla firma del metodo. Nella maggior parte dei casi le implementazioni dei Pointcut sono gestite in maniera statica (StaticPointcut), in modo da effettuare il caching del risultato di una valutazione di matching (operazione costosa in termini di performance) la prima volta che...

posted @ mercoledì 7 maggio 2008 20:25 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #31] Spring.Aop, Aspect Oriented Programming Framework Overview

Altra parte fondamentale di Spring.NET è l' AOP Framework. Questo post non vuole spiegare che cosa è o non è l'AOP, ma vuole focalizzarsi soltanto su gli strumenti forniti da Spring.NET per utilizzare questo paradigma di programmazione nelle nostre applicazioni .NET. Tutta via, un minimo di infarinatura è obbligatoria, in poche pareloe l'Aspect Oriented Programming è un paradigma complementare all'Object Oriend Programming e permette di modularizzare gli aspetti ed i comportamenti trasversali della nostra applicazione, separandoli dal dominio applicativo. L' AOP è composta da i senguenti concetti non legati al framework utilizzato ma al paradigma stesso: ...

posted @ mercoledì 16 aprile 2008 09:03 | Feedback (0) | Filed Under [ .NET OpenSource Spring.NET ]

Evolutionary Databases - Design and Deployment

Esistono diversi tools di Refactoring, in continua evoluzione, che aiutano uno sviluppatore agile ad evolvere in maniera incrementale il proprio codice. Lo stesso non si può dire per quanto riguarda il refactoring del database, si perchè anche quest'ultimo vuole la sua parte, quindi anche il design della del database deve evolvere in maniera incrementale, user story dopo user story. A questo punto nasce il probleblema di gestire questa naturale evoluzione all'interno del processo di sviluppo software. L'approccio generalmente usato è quello di partire da uno script di base di crazione del database, da lì in poi per ogni user story che...

posted @ mercoledì 26 marzo 2008 14:09 | Feedback (5) | Filed Under [ Database .NET OpenSource Agile ]

[Spring.NET #30] Spring.Core, Definire oggetti tramite ObjectDefinitionBuilder fluent interface

Spring.NET grazie alla classe ObjectDefinitionBuilder espone delle flunt interface API che permettono di definire oggetti da registrare nell' ApplicationContext. Per mostrare questa funzionalità non documentata replicherò l'esempio mostrato nel post [Spring.NET #14] Spring.Core, IoC e DI (Setter Injection) : 1: using System; 2: using Spring.Context.Support; 3: using Spring.Objects.Factory.Support; 4:  5: namespace SpringSeries.Core.ObjectDefinitionBuilderFluentInterface 6: { ...

posted @ mercoledì 12 marzo 2008 01:51 | Feedback (0) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #29] Spring.Core, Loosely Coupled Event Wiring

Grazie al motore di IoC, Spring.NET offre la funzionalità di Loosely Coupled Event Wiring, vale a dire la possibilità di scatenare ed intercettare eventi senza un legame diretto fra il publisher ed il subscriber. Il meccanismo avviene grazie ad un Registry mantenuto da Spring.NET, dentro al quale il publisher registra i propri aventi, rendendoli pubblici, a questo punto il subscriber potrà "dire" a Spring.NET quale eventi sottoscrivere. Passiamo subito ad un esempio pratico, creiamo una ConsoleApplication ed aggiungiamo la reference a Spring.Core.dll. Procediamo con l'oggetto publisher, come prima cosa aggiungiamo una classe CustomEventArgs, la quale sarà utilizzata nell'evento scatenato dalla...

posted @ domenica 9 marzo 2008 13:40 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #28] Spring.Core, Validation Framework e WinForm

Il framework di supporto per le WinForms si chiama Spring.NET RichClient ed è un progetto disponibile a parte rispetto a Spring.NET, sviluppato da Harald Radi. Ad oggi l'ultima versione scaricabile dal sito, la 0.2.1, è un po vecchiotta e presenta diversi problemi, quindi vi consiglio di scaricare l'ultima versione del codice sorgente direttamente dal trunk. Anche in questo questo post mi limiterò a parlare solo dell'integrazione fra le WinFroms ed il Validation Framework, altri aspetti riguardanti le applicazioni Windows e Spring.NET verrànno trattati in post futuri. Finite queste precisazioni iniziamo creando un'applicazione Windows ed aggiungendo i riferimenti alle librerie Spring.Core...

posted @ sabato 16 febbraio 2008 18:53 | Feedback (0) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #27] Spring.Core, Validation Framework e ASP.NET

In questo post affronteremo l'integrazione del Validation Framework di Spring.NET con le WebForm di ASP.NET. L'integrazione di Spring.NET con ASP.NET è molto ampia e non tocca solo il discorso della validazione, però in questo post mi limiterò su questo argomento. Fatta questa premessa cominciamo creando in Visual Studio un nuovo progetto ASP.NET Web Application, aggiungiamo le classi Person, AnddressInfo utilizzate nei post precedenti. Facciamo uguale con il file di risorsa Message.resx (introdotto in questo post), aggiungendolo nella directory App_GlobalResources. Eliminiamo Default.aspx ed aggiungiamo le pagine PersonEdit.aspx e...

posted @ sabato 26 gennaio 2008 21:24 | Feedback (2) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #26] Spring.Core, Validator Actions e Validation Errors

Altro nodo molto importante del Validation Framework sono le Validator Actions, le quali permettono di eseguire un operazione come consequenza del risultato della validazione. Lo scenario più frequente è quello di utilizzare una Error Message Actions per aggiugre un messaggio di errore alla collezione degli errori, gestita da Spring.NET. Nell'esempio mostrato nel primo post sul Validation Framework ho volutamente omesso questa parte per far capire meglio le due fasi distinte del processo di validazione, la prima dove vengono applicate le regole e la seconda dove vengono eseguite una serie di operazioni di conseguenza. Come intuibile la seconda fase è dipendente...

posted @ domenica 23 dicembre 2007 18:25 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #25] Spring.Core, Impostare le regole di validazione in maniera programmatica

Come già detto in un post precedente possiamo definire il set di regole di validazione anche in maniera programmatica utilizzando le API fornite da Spring.NET. Vediamo come creare via codice le regole dichiarate nel file XML nell'esempio del post precedente: 1: using System; 2: using Spring.Validation; 3: using Spring.Expressions; 4:   5: namespace SpringSeries.Core.ValidationObjectModel { ...

posted @ domenica 16 dicembre 2007 15:24 | Feedback (0) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #24] Spring.Core, Validators e Validator Groups

La validazione di un'oggetto avviene grazie alla definizione di un insieme di regole. In Spring.NET la singola regola si chiama Validator e l'insieme di regole si chiama Validator Groups. Come è facile immaginare esistono già built-in diversi tipi di Validators e di Validator Groups adatti ai più disparati scenari di validazione però se in certi casi non sono adatti ai nostri bisogni possiamo sempre crearne di nostri implementando l'interfaccia IValidator oppure la classe base BaseValidator. Analiziamo i Validators cominciando dal più semplice, il Required Validator, il quale verifica che un determinato campo sia valorizzato: <v:required id="PersonFirstNameValidator" test="FirstName" /> procediamo...

posted @ sabato 15 dicembre 2007 17:22 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #23] Spring.Core, Introduzione al Validation Framework

Iniziamo a parlare del Validation Framework contenuto in Spring.NET, un framework molto completo e varsatile adatto a molti scenari. I motivi che hanno spinto il team di Spring.NET ha creare questo framework sono svariati, descritti dettagliatamente in qui e qui. Il più grande problema della maggior parte dei framework di validazione disponibili oggi è che sono troppo legati alla tecnologia di presentazione, come le stesse funzionalità di validazione fornite dal .NET Framework per ASP.NET e WinForm. Grazie a Spring.NET possiamo effettuare la validazione dei dati non più solo nel presentation layer ma in tutti i layer che compongono la nostra...

posted @ mercoledì 12 dicembre 2007 21:43 | Feedback (6) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #22] Spring.Core, IMessageSource by ResourceSetMessageSource

Nel post precedente ho parlato dell'interfaccia IMessageSource e della sua implementazione più semplice, StaticMessageSource. In questo post invece vedremo la più utile implementazione ResourceSetMessageSource, la quale permette di leggere le risorse in maniera localizzata da file .resx direttamente con l' ApplicationContext, definendo il funzionamento tramite il file di configurazione. Come di consueto creiamo una Console Application ed in seguito aggiungiamo due file di risorse di nome AppRescource.resx ed AppResource.en-US.resx, nel primo inseriamo, utilizzando come chiave la stringa "HelloMessage", la frase localizzata in italiano, nel secondo invece, sempre con la solita chiave, inseriamo la frase localizzagta in inglese. Adesso aggiungendo un...

posted @ lunedì 10 dicembre 2007 20:55 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #21] Spring.Core, IMessageSource by StaticMessageSource

Spring.NET offre anche funzionalità di localizzazione/internazionalizzazione delle risorse. Tutta la gestione avviene tramite l'interfaccia IMessageSource, che è parte integrante dell' ApplicationContext, con i seguenti metodi: GetMessage: esistono molti overload di questo metodo i quali permettono di ottenere una risorsa di tipo stringa indicando la chiave, la CultureInfo, ed un'insieme di argomenti che verranno utilizzati come valori di replace per la stringa. GetResourceObject: permette di ottenere una quasiasi risorsa, per esempio un immagine. Anche in questo caso esistono più overload del metodo ed i possibili parametri sono la chiave, la CultureInfo. ...

posted @ domenica 9 dicembre 2007 12:23 | Feedback (621) | Filed Under [ .NET OpenSource Spring.NET ]

Rilasciato Spring .NET 1.1 Final Release

Ieri è stata rilasciata la versione finale di Spring .NET 1.1 . Potete effettuare il download da SourceForge, leggere il dettagliato changelog oppure la  nuova documentazione. Colgo l'occasione per ricordarvi che Spring.NET è un software Open Source che offre un supporto commerciale tramite l'azienda SpringSource. Technorati Tag: Spring.NET

posted @ sabato 8 dicembre 2007 19:51 | Feedback (0) | Filed Under [ .NET OpenSource Spring.NET ]

[Spring.NET #20] Spring.Core, Expression Language

Expression Language è un linguaggio di interrogazione e manipolazione di grafi di oggetti. Questa funzionalità è molto utile in tutti quei casi di verifica dello stato di un oggetto a runtime. Spring.NET utilizza questo linguaggio per l' IoC Container, Data Validation ed il Data Binding per ASP.NET. Questo linguaggio utilizza la libreria ANTLR per costruire il Lexer ed il Parser dell'espressione. Tutta la grammatica utilizzabile all'interno di una espresione è definita nel file Expression.g . Facciamo subito un esempio per capiere meglio di cosa parliamo, all' interno una Console Application aggiungiamo una classe Student: 1: using System; 2:   ...

posted @ sabato 24 novembre 2007 18:56 | Feedback (1) | Filed Under [ .NET OpenSource Spring.NET ]

Full OpenSource Archive

Powered by:
Powered By Subtext Powered By ASP.NET