febbraio 2009 Blog Posts
Qualche giorno fa mi sono imbattutto in una simpatica applicazione Windows Forms che permette di disegnare su una lavangna virtuale il posizionamento in campo di due squadre di calcio. Un'applicazione per allenatori insomma :D. In breve, il funzionamento è semplicemente basato sull'aggiunta e sullo spostamento di pedine (rosse o blu) su un campo di calcio virtuale con eventuale possibilità di ingrandirne/rimpicciolirne le dimensioni. Guardando il sorgente ho osservato come l’intera applicazione fosse stata concepita e sviluppata "alla Windows Forms" con l'intera logica piazzata all'interno di ciascun event handler dei vari elementi dell'UI. Ho...
Dal punto di vista della flessibilità, ritengo che WCF sia una delle tecnologie più potenti attualmente disponibili per lo sviluppo di applicazioni orientate ai servizi. In particolare, una delle caratteristiche che apprezzo maggiormente è la facilità di personalizzazione del comportamento runtime degli OperationContract sia client-side che service-side ( pratica per altro molto usata nel WCF REST Starter Kit :D ).
In questo post volevo soffermarmi proprio su questo aspetto, mostrando un semplice esempio di implementazione dell’interfaccia IOperationBehavior, che per l'appunto definisce quattro metodi finalizzati all'estensione del runtime behavior di un'operation:
AddBindingParameters : serve per aggiungere nuovi elementi di binding utilizzabili dall'operation in fase di esecuzione. ...
Clamoroso :D http://blogs.msdn.com/mitsu/archive/2009/02/13/coding4fun-understanding-winforms-designmode.aspx
Quando si sviluppano architetture N-tier che prevedono uno o più service layer è sempre consigliabile l’utilizzo di DTO per scambiare dati tra livelli, indipendentemente dal (fuorviante) fatto che ogni DataContract esposto da un servizio (es. WCF) possa essere in mapping 1:1 con i business objects (es. EntityObject). Un DTO infatti è solitamente un POCO le cui proprietà in molti casi si possono mappare sia nel nome che nel tipo in un sottoinsieme di quelle di uno o più oggetti di business.
Ad ogni modo, al fine di aumentare la produttività nel valorizzare un DTO che possiede proprietà in comune nel...
EntityClient (namespace System.Data.EntityClient) è un provider che l’EntityFramework mette a disposizione per accedere ai dati descritti da unEntity Data Model (EDM), ovvero una sorta di gateway per query sul modello concettuale e non sulla relativa rappresentazione fisica.
Le query invocabili dall’ EntityClient vanno dunque scritte in un dialetto di SQL chiamato “EntitySQL”: a runtime, la pipeline compila il testo EntitySQL in un command tree che viene passato al data provider sottostante per la generazione del comando SQL nativo. Dietro le quinte, infatti, EntityClient utilizza i provider ADO.NET per accedere alle sorgenti dati ( es. SqlClient per SQL Server ). L’aspetto...
Una delle tecniche che permettono di aumentare le performance di un' applicazione web si basa sul caricamento "on-demand" di javascript via Ajax. In questo modo si possono ridurre le latenze di precaricamento di troppe librerie javascript alla prima GET di una pagina. Infatti, in alcuni scenari specifici risulta più consigliabile scaricare "pezzi" di script solo quando se ne ha bisogno. Fino a non molto tempo fa ho avuto modo di testare alcune librerie free come Include e AJILE che permettono di raggiungere questo obiettivo senza troppi problemi. Ma da quando sono passato a jQuery le cose sono cambiate :D.
Vorrei semplicemente mostrare un...
Segnalo questa importante iniziativa che sta partendo su agilemovement.it : XPUG Marche.
Lo scopo è la creazione di una community attenta nel promuovere le metodologie "agili" sul territorio marchigiano.
Chi è interessato a dare il proprio contributo può rispondere a questo appello:
http://www.agilemovement.it/forum/topics/xpug-marche-chi-e-interessato
Per ora ci stiamo contando in modo da organizzare un incontro prima possibile , per decidere sul da farsi.
WCF è un framework concepito per sviluppare scenari di comunicazione completamente disaccoppiati sotto ogni punto di vista. In particolare, per quanto riguarda la sincronizzazione dei messaggi, è prevista internamente una rigida implementazione di pattern asincroni per ottenere chiamate non bloccanti tra i vari livelli strutturali. Esternamente, invece, WCF espone possibilità di programmazione asincrona sia client-side che server-side. L'aspetto interessante da approfondire in merito è come il programming model asincrono client-side non abbia nulla a che vedere con quello server-side: ovvero, un client può sostanzialmente invocare in modo asincrono un servizio indipendentemente dal fatto che esso sia implementato con un pattern...
Segnalo il progetto “Visual Studio Testing Extensions” su CodePlex. Si tratta di una library concepita principalmente per migliorare la creazione di UnitTest nell’ambiente di Testing di Visual Studio. In breve, la library introduce due feature: La possibilità di migliorare sensibilmente la leggibilità di uno unit test grazie all’introduzione di opportuni extension methods ( es. myInt.ShouldEqual(5); invece di Assert.AreEqual(myInt, 5); ) La possibilità di asserire exception multiple nei risultati attesi di un singolo TestMethod. Il tutto sfruttando un delegate Action(). Ad esempio: Testing.ShouldThrowException<ArgumentNullException>(() => { …...