di .NET e di altre amenità

Auguri 2008

Merry XMas and Happy new Year Mi appresto a concludere l'ultimo giorno di ufficio del 2008 e ad iniziare un periodo di vacanza fino al 7 Gennaio - il più lungo da svariati anni - e come di consueto è giunto il momento di fare i miei auguri ai conoscenti. Ho già inviato alcune email ma la verità è che tra gli innumerevoli contatti che ho raccolto negli ultimi anni - è sorprendente quanti siano - sicuramente avrò dimenticato qualcuno per cui il posto migliore per fare i miei auguri è sicuramente il mio Weblog.

Vorrei quindi ringraziare tutti i miei lettori che mi seguono assiduamente su queste pagine, quelli di vecchia data e quelli che continuamente si aggiungono al mio feed anche se recentemente è stato aggiornato con minor frequenza per impegni di lavoro.

Vorrei ringraziarli per la stima che mi riservano e per i continui stimolanti quesiti che mi rivolgono che per me sono occasione per confrontarmi con problemi diversi tutti i giorni.

E veniamo agli auguri che quest'anno in qualche modo sono più complessi e articolati. Inutile nascondere che da qualche mese si è aperto un periodo difficile - economicamente parlando - e che questo potrebbe influire più o meno su ognuno di noi il prossimo anno. Quindi a fianco dei miei Auguri di Buon Natale vorrei augurarvi di trovare in voi la forza, la creatività e la dedizione sufficienti per superare le difficoltà che potrete incontrare tenendo presente che quello che rimane in seguito ad una crisi sono solo le grandi opportunità della ripresa.

Perciò a tutti auguro - senza tanti fronzoli - un Felice Natale e un Sorprendente 2009.

Technorati Tag:

Entity Framework: Il materiale del meeting

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: ,

Silverlight 2.0: Aggiornamento della DataGrid

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: ,

Come non essere d'accordo...

Questa è proprio da sottoscrivere:

Link: Senza parole… anzi… sta volta voglio proprio dire quello che penso…

Sono passato a Windows Server 2008

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...

Un concorso d'altri tempi?

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

Silverlight 2.0: Physics Helper library

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

Silverlight 2.0: Rilasciato Unity per Silverlight

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

Silverlight: Gestire la comunicazione asincrona

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.