giovedì 23 giugno 2011

Recensione : Windows® Phone 7 Developer Guide

Windows Phone 7 - Developers Guide - Patterns & Practices- Titolo: Windows® Phone 7 Developer Guide
-
Autori: Sharp, John
-
Editore: Microsoft Press
-
Data di pubblicazione: 07/12/2010
-
Pagine: 736
-
ISBN13: 9780735645561
-
ISBN10: 9780735645561
-
Lingua: Inglese

 

L’arrivo di Windows Phone 7 ha dato nuova linfa allo sviluppo di applicazioni mobile nell’ambito del framework .NET e il supporto didattico (libri, materiale video, post su blog, etc., etc.) sono andati di pari passo.

Il rischio che si corre nella scrittura di un libro su questo argomento è quello di realizzare una “collezione” di materiale già esistente e recuperabile nel vasto mondo della rete.

Quello che colpisce, invece, di questo libro è che “ci mette del suo” cioè, oltre a trattare argomenti “classici” per lo sviluppo Windows Phone 7 che si trovano in tutti i testi o i post sulla rete, va a toccare argomenti poco considerati come l’utilizzo del MVVM nelle applicazioni WP7 (sia in termini generici che facendo riferimento a Prism), la gestione dei dati on the cloud o la gestione delle interazioni asincrone (utilizzando Reactive Extensions).

Il lato negativo del libro è, invece, che gli argomenti sono trattati in maniera superficiale e senza entrare in dettaglio. Questo può essere visto come un fatto negativo perchè ci costringe ad utilizzare altre fonti per esplodere l’argomento ma anche in termini positivi perchè fa si che il libro si mantenga snello e fluido.

Da segnalare un’intera appendice riguardante le “capability” dei device WP7 come touch and gesture, contatti e messaggi, etc., etc.; un’appendice su Prism (secondo me mirata a chi già conosce il framework MVVM di casa Microsoft) e una su Sync Framework ed il suo utilizzo con WP7 (poteva forse essere espansa per fornire maggiori info, ma sono presenti, almeno, i links alle risorse da consultare).

Per quanto riguarda gli argomenti trattati, mi ha colpito la presenza di un paragrafo in cui si parla del design delle applicazioni. E’, a mio modo di vedere, fondamentale capire come deve essere strutturata un’interfaccia WP7 in quanto il successo di un’applicazione per un display con poco spazio e con l’interfaccia in stile Metro dipende fortemente da come i controlli e l’accesso alle funzionalità sono presentate.

In definitiva un libro discretamente scritto ma che non riscotrerà i favori di chi cerca dettagli specifici su particolari argomenti. Se state cercando di approfondire degli argomenti specifici non è il vostro libro, mentre se state cercando un libro snello che vi dia gli spunti per, poi, approfondire con altre risorse ciò che avete letto, allora il testo è adattissimo allo scopo.

 

Recensione : Windows Communication Foundation 4 – Step by Step

Adoro leggere e adoro tenermi aggiornato riguardo al mondo .NET, quindi unendo le due cose ecco che vorrei inaugurare una rubrica di recensioni di libri anche in virtù del fatto che faccio parte dell’O'Reilly Blogger Review Program.

Il libro di questo post è “Windows Communication Foundation 4 – Step by Step” di John Sharp.

wcf 4 step by step cover

- Titolo: Windows Communication Foundation 4 Step By Step
-
Autori: Sharp, John
-
Editore: Microsoft Press
-
Data di pubblicazione: 07/12/2010
-
Pagine: 736
-
ISBN13: 9780735645561
-
ISBN10: 9780735645561
-
Lingua: Inglese

Quando ci si avvicina ad una nuova tecnologia, ed in particolare quando questa tecnologia è complessa come lo è Windows Communication Foundation, è importante, a mio modesto avviso, costruire delle solide basi teoriche, degli strumenti di base, che consentano, in seguito, di poter addentrarsi nei dettagli e nei casi particolari senza dover pagare dazio.

Nel momento in cui si conosce la tecnologia (almeno le basi) è necessario, invece, avere a disposizione una reference guide in grado di fornire rapidamente le risposte cercate per poter essere immediatamente produttivi o per poter avere quell’input necessario a sbloccare un momento di difficoltà che ci blocca nel nostro lavoro quotidiano.

Il libro che vi propongo è un libro della collana Step by Step di Microsoft Press, scritto da John Sharp (autore di altri linbri della serie Step by Step soprattutto su C#) ed è un ottimo strumento per chi si avvicina a WCF ed ha la necessità di costruire quel bagaglio di strumenti di base di cui parlavo in precedenza.

Il libro non è una reference guide ma limitatamente ai concetti introduttivi di WCF 4.0 permette di avere rapidamente le informazioni cercate. Si tratta di un testo adatto a chi si trova per la prima volta alle prese con il framework WCF mentre lo è meno per chi conosce WCF e vuole approfondire l’argomento.

Gli argomenti trattati non entrano quasi mai nello specifico ma si limitano a fornire una infarinatura di base (decisamente ben fatta, ma comunque di base) ma questa è, generalmente, una caratteristica della serie Step By Step e questo volume non è diverso dagli altri.

La lettura scorre relativamente fluida (sempre considerando che si tratta di un libro pieno di vocaboli e termini tecnici), gli esempi sono sufficientemente spiegati ed il codice con gli esempi è scaricabile dal web.

Se vogliamo trovare un punto a sfavore del libro, possiamo dire che la maggior parte del discorso è incentrato sulla visione web services di WCF e vengono poco presi in esame gli altri possibili bindings messi a disposizione da WCF. Credo che, però, questa sia una scelta dell’autore visto il taglio beginner del testo e la vastità del mondo bindings in WCF (di fatto, il primo utilizzo che si fa di WCF da parte di chi si avvicina al framework è quello di sostituire i “vecchi” web service XML). In ogni caso se avete la necessità di studiare o approfondire la visione WCF non WebServices, allora questo libro non fa al caso vostro.

Per concludere, a mio modesto avviso, si tratta di un buon libro da cui non ci si deve però aspettare il ruolo di reference guide su WCF. Se abbiamo bisogno della “bibbia” di WCF, quseto non è il nostro libro, mentre se dobbiamo avvicinarci al mondo WCF, probabilmente si tratta della scelta giusta.

 

giovedì 16 giugno 2011

Caliburn.Micro, NuGet e Visual Basic.Net

In questi giorni mi trovo, per lavoro e per la community, a smanettare con Caliburn.Micro (che tra le altre cose consiglio perché se ci riesco a lavorare io, significa che è veramente fatto bene).

Ho notato che, agganciando il framework con NuGet all’interno di un progetto Visual Basic.Net, compaiono le classi di bootstrap, la shell e l’interfaccia che definisce la shell ma con la spiacevole controindicazione che sono in C#.

Questo post ha lo scopo di spiegare come agganciare Caliburn con NuGet in un progetto VB.NET.

Agganciare il framework con NuGet è semplicissimo (come lo è sempre utilizzando NuGet). In questo caso stiamo parlando di un progetto WPF, ma la procedura è identica per Silverlight o WP7.

Per cominciare accertiamoci di aver installato ed abilitato NuGet tra le estensioni di VS (basta vedere se con il tasto destro su un progetto appare il menù contestuale “Add Library Package Reference…”).

Lanciamo il comando precedente sul progetto in cui vogliamo aggiungere Caliburn.Micro e selezioniamo il package dalla maschera:

SNAGHTMLa8d9aa0

Il tasto install ci consente di istallare e configurare Caliburn.Micro.

Al termine dell’installazione il progetto apparirà nel seguente modo:

image

Rimuoviamo i file .cs e inseriamo gli omonimi file .vb con le classi che riporto di seguito:

Appbootstrapper.vb

  1. Imports Caliburn.Micro
  2. Imports System.ComponentModel.Composition.Hosting
  3. Imports System.ComponentModel.Composition.Primitives
  4.   ImportsSystem.ComponentModel.Composition
  5.  
  6. Public Class AppBootstrapper
  7.     Inherits Bootstrapper(Of IShell)
  8.  
  9.     Private container As CompositionContainer
  10.  
  11.     ' <summary>
  12.     ' By default, we are configured to use MEF
  13.     ' </summary>
  14.     Protected Overrides Sub Configure()
  15.         Dim catalog = New AggregateCatalog(AssemblySource.Instance.Select(Function(x) New AssemblyCatalog(x)).OfType(Of ComposablePartCatalog)())
  16.  
  17.         container = New CompositionContainer(catalog)
  18.  
  19.         Dim batch = New CompositionBatch()
  20.  
  21.         batch.AddExportedValue(Of IWindowManager)(New WindowManager())
  22.         batch.AddExportedValue(Of IEventAggregator)(New EventAggregator())
  23.         batch.AddExportedValue(container)
  24.         batch.AddExportedValue(catalog)
  25.  
  26.         container.Compose(batch)
  27.     End Sub
  28.  
  29.  
  30.     Protected Overrides Function GetInstance(service As System.Type, key As String) As Object
  31.         Dim contract = If(String.IsNullOrEmpty(key), AttributedModelServices.GetContractName(service), key)
  32.         Dim exports = container.GetExportedValues(Of Object)(contract)
  33.  
  34.         If exports.Count() > 0 Then Return exports.First()
  35.  
  36.         Throw New Exception(String.Format("Could not locate any instances of contract {0}.", contract))
  37.     End Function
  38.  
  39.     Protected Overrides Function GetAllInstances(service As System.Type) As System.Collections.Generic.IEnumerable(Of Object)
  40.         Return container.GetExportedValues(Of Object)(AttributedModelServices.GetContractName(service))
  41.     End Function
  42.  
  43.     Protected Overrides Sub BuildUp(instance As Object)
  44.         container.SatisfyImportsOnce(instance)
  45.     End Sub
  46.  
  47.  
  48. End Class

IShell.vb

  1. Public Interface IShell
  2.  
  3. End Interface

ShellViewModel.vb

  1. Imports System.ComponentModel.Composition
  2.  
  3. <Export(GetType(IShell))>
  4. Public Class ShellViewModel
  5.     Implements IShell
  6.  
  7. End Class

Le classi possono ovviamente essere personalizzate sia nel comportamento che nei namespace.

Con l’inserimento di queste classi, il progetto assume la forma:

image

Per la configurazione dello startup dell’applicazione fate riferimento alla documentazione di Caliburn.Micro (http://caliburnmicro.codeplex.com/wikipage?title=Nuget&referringTitle=Documentation) che spiega passo passo cosa fare.

Ricordatevi di fare attenzione ai namespace della ShellView e della ShellViewModel per fare in modo che Caliburn riesca ad associarle.

In particolare è necessario prestare attenzione alla ShellView. Il package NuGet, infatti, crea il seguente Xaml:

  1. <Window x:Class="NomeProgetto.ShellView"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  4.  
  5.     <Grid Background="White">
  6.         <TextBlock Text="Hello Caliburn Micro!"
  7.                    VerticalAlignment="Center"
  8.                    HorizontalAlignment="Center"
  9.                    FontSize="20" />
  10.     </Grid>
  11.  
  12. </Window>

Come possiamo osservare la classe ShellView si trova nel namespace “NomeProgetto.ShellView”, mentre la ShellViewModel (così come definita in precedenza) nel namespace root. In questo caso la convenzione che sta alla base del funzionamento di Caliburn non è in grado di associare View e ViewModel ed otterrete:

SNAGHTMLaf22a05

Per risolvere il problema è sufficiente togliere il namespace davanti al nome della classe nella view.

 

martedì 7 giugno 2011

Rilasciata una nuova versione dei Code Contracts

Il 2 giugno è stata rilasciata la versione 1.4.40602.0 dei Code Contracts.

Potete scaricare i due pacchetti di installazione dal sito ufficiale (link).

Nel sito trovate anche l’extension per Visual Studio (accessibile anche attraverso Extension Manager) che permette di visualizzare nell’ambiente di sviluppo il tooltip con gli eventuali contratti definiti.

Le novità di questa versione sono relative ad ottimizzazioni e poco più in particolare riguerdanti lo Static Checker.

 

Tag di Technorati: ,

mercoledì 1 giugno 2011

DomusDotNet 1.0 Unleashed è fuori!!!

In qualità di curatore e appartenente alla community DomusDotNet sono orgoglioso di comunicarvi che è stato pubblicato il libro:

Copertina_web

Il testo nasce per festeggiare il primo anno di vita della community romana.

E’ un estratto di articoli e pillole pubblicate durante il primo anno di vita del portale.

Il libro è in vendita su Lulu.com.

Support independent publishing: Buy this book on Lulu.