E' passata una settimana durante la quale ho un po' staccato. Naturalmente ho dimenticato di pubblicare i sorgenti e le slide dei meeting. Viste le incalzanti richieste eccomi finalmente a pubblicare il materiale che vi avevo promesso. Si tratta più o meno di una serie di esempi riguardanti l'Entity Framework che ho messo assieme mentre lo studiavo. Questi esempi poi sono diventati la base per la sessione dello scorso 12 Dicembre.

Approfitto per ringraziare i partecipanti che hanno dimostrato di apprezzare la sessione - nonostante l'argomento fosse un po' pesante - sia per mezzo dei feedback che contattandomi durante questi giorni per pormi qualche domanda.

Ed ecco il link al materiale: http://blog.boschin.it/download/entityframework.rar

Ancora grazie.

Technorati Tags: ,

Giusto ieri è diventato pubblico un aggiornamento alla datagrid di Silverlight 2.0 che risolve alcuni malfunzionamenti. Nei post che riporto qui sotto trovate i dettagli dell'aggiornamento, le breaking changes e le istruzioni per installare la patch:

http://blogs.msdn.com/brada/archive/2008/12/19/silverlight-2-datagrid-december-2008-release.aspx

http://silverlight.net/forums/t/59990.aspx

Technorati Tags: ,

windows2008logoDopo un paio di serate di lavoro ho concluso il ripristino del mio portatile sul quale ho installato Windows Server 2008.

Devo dire che ora che ho sistemato tutto a dovere, i risultati sono eccellenti. La macchina ha guadagnato in velocità in modo più che apprezzabile, e non ho perso nulla rispetto a Windows Vista se escludiamo, unico caso isolato, il ReadyBoost.

Ho installato e attivato tutto, Aero, Sidebar, Gadgets, etc... ed è rimasta anche qualche feature poco user friendly tipica di Vista. Se qualcuno avesse intenzione di tentare questo stesso passaggio consiglio di usare il seguente sito come guida per il setup:

http://www.win2008workstation.com/

Le cose da tarare sono molte, e non tutto è semplice e immediato, ma con le istruzioni talvolta illustrate di questo sito tutto si riduce a un po' di tempo e pazienza. C'è persino la guida per fare il setup di Live Messenger, Live Writer & co. Alla fine ho anche applicato come ultima "taratura" l'elenco di servizi da attivare e disattivare rispetto alle mie esigenze.

Certo che alla fine, nonostante io sia uno dei sostenitori di Windows Vista tutto sommato soddisfatto, rimane il dubbio di come sia possibile che due sistemi praticamente identici (i driver sono esattamente gli stessi di Vista) possano avere prestazioni così differenti...


MIX09_Color_RGB_tag Pensateci bene e rispondete a questo quesito: "cosa potete fare con 10K di codice in Silverlight o WPF?". Per quando la domanda può sembrare assurda, la risposta a questo quesito può essere davvero interessante e le conseguenze anche allettanti.

Si tratta infatti di un nuovo concorso collegato al MIX 2009, tra i cui premi si trovano anche dei biglietti di ingresso alla prestigiosa manifestazione. Il primo premio addirittura vince 3 notti al prestigioso (quanto assurdo) Venetia di Las Vegas e una carta di credito con 1500$.

Aldilà dei premi, sicuramente interessanti, devo dire che mi piace l'idea che sta dietro al concorso, un'idea con un sapore d'altri tempi, in cui davvero sviluppare con i Byte contati era cosa di tutti i giorni.

Ma attenzione che 10K sono di "codice" e non di "compilato". :) Una sfida davvero estrema.

Link: INSPIRE THE WORLD WITH JUST 10K

tags: - categories: XAML

Ecco un interessante progetto che sicuramente può trovare delle applicazioni sia ludiche che professionali. Si tratta di un engine fisico sviluppato per Silverlight 2.0, porting di un framework open source.

Codeplex: http://www.codeplex.com/PhysicsHelper

Home: http://www.andybeaulieu.com/Default.aspx?tabid=67&EntryID=128


Stamattina ho trovato la notizia che è stata rilasciata la versione di Dicembre del porting per Silverlight 2.0 del framework Unity. Unity è un framework per la dependency injection già rilasciato per altri ambienti. Interessante il porting per Silverlight che dovrò sicuremente provare.

Download: Unity Application Block 1.2 for Silverlight - December 2008


Una delle particolarità di Silverlight è che ogni attività rivolta alla rete - sia essa la chiamata ad un metodo di web service piuttosto che il download di un feed rss o quant'altro - deve essere svolto in modo asincrono. Questo comportamento che deriva dal fatto che il plugin non è in grado di fare il rendering quando il thread principale è occupato a svolgere altre attività, è un po' fastidioso perchè impone di gestire le chiamate in due tempi e non sempre questo è semplice e immediato.

Nei giorni scorsi ho trovato una soluzione a questo problema, una tra molte probabilmente, che mi è piaciuta e ho deciso di pubblicarla. Il problema principale che ho voluto risolvere cercando questo tipo di soluzione è la possibilità di riutilizzare facilmente i metodi di un ipotetico layer di comunicazione. Per questo ho rinunciato ad usare un meccanismo basato su eventi sollevati alla ricezione dei risultati perchè questo costringe a continui Attach/Detach degli eventi da parte di diversi componenti della user interface.

Ho utilizzato invece la classe Action<T> che è una diretta parente di Func<T,TResult> con la peculiare differenza di fare riferimento a metodi senza valore di ritorno. Action<T> infatti è un delegate così definito:

   1: public delegate void Action<T>(T obj);

L'idea fondamentale è che ogni volta che si chiama un metodo asincrono ci si trovi di fronte alla possibilità di avere il risultato richiesto oppure una eccezione che indica una condizione di errore. Per questo tipicamente ad ogni metodo farà riferimento un Action<T> per il risultato, dove T è il tipo del risultato e un secondo Action<Exception> per la condizione di errore. La tecnica emula sostanzialmente il comportamento di javascript nella chiamata a metodi di webservice in cui per ognuna delle due possibili condizioni si deve definire un callback che la gestisce.

Il vantaggio è che i metodi da eseguire possono essere scelti ad ogni chiamata e quindi il metodo può essere più facilmente riutilizzabile. Ecco l'implementazione per un ipotetico metodo che restituisce i prodotti da un catalogo:

   1: public static class AppServices
   2: {
   3:     public static void GetProducts(
   4:         Action<ObservableCollection<Product>> successAction, 
   5:         Action<Exception> failAction)
   6:     {
   7:         ProductCatalogClient client = new ProductCatalogClient();
   8:  
   9:         client.GetProductsCompleted += delegate(object sender, GetProductsCompletedEventArgs e)
  10:                                            {
  11:                                                if (e.Error == null)
  12:                                                    successAction.Invoke(e.Result);
  13:                                                else
  14:                                                    failAction.Invoke(e.Error);
  15:                                            };
  16:         client.GetProductsAsync();
  17:     }
  18: }

Per chiamare questo metodo basterà specificare i due metodi di callback che verranno chiamati al termine dell'operazione asincrona. Si tratta a mio parere di una tecnica semplice e flessibile che vale la pena di prendere in considerazione se si deve comunicare spesso con servizi di accesso ai dati. Il codice risultante sarà sicuramente più snello e comprensibile.

tags: - categories: XAML

Sono un po' di giorni che non bloggo a proposito dell'attività dello user group . Questo non vuol dire che l'attività sia scemata, piuttosto nonostante i tanti impegni che mi hanno distolto dal promuovere il nostro lavoro, le attività si sono moltiplicate.

A partire da Venerdì prossimo infatti riprendono i consueti meeting rafforzati da nuovi appuntamenti organizzati con il prezioso aiuto di 1nn0va in quel di Pordenone. Ecco di seguito il calendario degli eventi che ci aspettano:

21/11/2008 - SQL Server 2008: Le novità - Novotel Mestre
Speaker: Simone Corsini

4/12/2008 - Microsoft .NET Compact Framework - Università di Pordenone
Speaker: Mirco Vanini

12/12/2008 - IEnumerable Tales: Entity Framework e Linq to Entities - Novotel Mestre
Speaker: Andrea Boschin

Sono certo che la ricchezza e la varietà di argomenti che stiamo mettendo in campo raccoglierà il favore del pubblico. Per questo invito chiunque ne sia interessato a cogliere l'occasione per venire a conoscerci e ad apprezzare l'opera di divulgazione che stiamo portando avanti.

Per le iscrizioni vi invito a rivolgervi a questa pagine presso cui potrete scegliere i meeting che più vi interessano.

http://www.xedotnet.org/nextmeeting.aspx

Ci vediamo presto!

Technorati Tags: ,
tags: - categories: News