Visto che a DevCon 2007 non tratteremo lo sviluppo mobile su Orcas (abbiamo varie sessioni sulla 3.5, ma non per la parte mobile), abbiamo pensato di postare un piccolo articolo riepilogativo delle novità del prodotto e degli strumenti a contorno.
A breve organizzeremo una conferenza Mobile DevLeap dove trattare, con la nostra filosofia, lo sviluppo di applicazioni mobile su N-layer e integrate con le soluzioni server.
Prime impressioni sulla Beta1 di Orcas.
Ho installato il tutto su una macchina VMWare dedicando 1.4 GB alla Virtual Machine memore della quantità di memoria che "ciucciava" la CTP di Marzo.
Dalle prime prove mi sembra molto più snello e non supero quasi mai il primo GB di memoria: non c'è paragone neanche sulla velocità.
Nella mia installazione non appariva la toolbox e neanche la tollbat Standard: basta ovviamente attivarle e appaiono.
Nella virtual machine VPC scaricabile (ho preso la versione con VSTS e TFS) non c'è ActiveSync, quindi ho montato la 4.5. Manca anche il Windows Mobile 6.0 SDK come segnalato nei post precedenti: a MEDC hanno confermato che non ci sarà neanche nella versione finale e va installato a parte.
Il .NET CF 3.5 adesso installa le stringhe di risorse sul device/emulatore tramite un nuovo cab denominato NETCFv35.Messages.EN.CAB che si trova sotto x:\program files\Microsoft.NET\SDK\CompactFramework\v3.5\windowsce\Diagnostics.
La creazione di un nuovo progetto presenta una nuova maschera, simile a quanto avveniva in VS 2003: non si sceglie il progetto dall'alberino delle varie solution disponibili, ma è sufficiente scegliere Smart Device: una volta scelto il tipo di progetto in una seconda maschera si sceglie la tipologia di piattaforma e poi la versione del .NET CF da utilizzare per le reference e per la distribuzione del runtime sul device. Si può optare per .NET CF 2.0 o per .NET CF 3.5.
N.B. le immagini incluse sono ridotte come dimensione: accanto ad ognuna il link verso la dimensione reale.
Questa la prima maschera:

Come si nota le piattaforme per cui è installato nativamente l'SDK sono Pocket PC 2003, Windows CE, Windows Mobile 5.0 for Pocket PC e SmartPhone.
Una volta scelta la piattaforma si sceglie la versione del .NET CF da utilizzare:

Dopo la scelta della versione del .NET CF, come sempre scegliere Device Application, Class Library e così via per creare il tipo di progetto.
Il designer delle Windows Form (visto che WPF non è disponibile sul .NET CF 3.5) si presenta molto simile al precedente: si può scegliere il form factor da assegnare ad ogni form e ruotare lo schermo del designer come nella versione 2005 di VS.

Anche la toolbox si presenta più o meno identica. Questo l'elenco dei controlli:

La configurazione dell'emulatore da Visual Studio prevede quanto conosciamo con l'attuale Device Emulator 2.0 e consente la gestione del livello della batteria: questa funzione risulta molto comoda per testare un'applicativo power-aware (come dovrebbero essere tutti): è inutile lanciare una operazione lunga di analisi sui dati, ad esempio, se resta il 2% di batteria.

Molto interessante il nuovo Device Configuration Manager, primo fra gli strumenti per facilitare la configurazione di device e emulatori: ad oggi è necessario comporre i file .xml di provisioning e "installarli" tramite rapiconfig.exe. Con questo nuovo strumento risulta molto semplice leggere la configurazione, modificarla e vedere le differenze fra la configurazione desiderata e quella attuale. Si possono importare anche i nostri file di provisioning esistenti per una facile migrazione al nuovo strumento.

Risulta molto semplice così testare l'applicazione firmata o non firmata sulle varie configurazioni dei device One-Tier, Two-Tier, Locked, Prompt e così via.
Tramite questo strumento è possibile visualizzare i certificati digitali installati su device e emulatori, installarne di nuovi e verificarne i dettagli. Una nota, i nomi dei certificate store sono cambiati: non abbiamo più il privileged e unprivileged, ma Privileged Store e Standard Store, dove il secondo rappresenta lo store per i certificati con cui le applicazioni possono girare in normal-mode su device two-tier.

Il .NET CF Remote Performance Monitor consente, nella nuova versione di fare un "attach to process" rendendo più semplice l'analisi di una porzioni di applicazione: la versione attuale deve lanciare l'applicazione e quindi ci costringe a visualizzare i dati complessivi di tutta l'applicazione fino a raggiungere il punto in cui si desidera effettuare le verifiche. La parte device-side viene installata in automatico dallo strumento senza bisogno di copiare manualmente i file nella directory \Windows: qualche problemino sulla mia Beta non consente di eseguire questa operazione in automatico e quindi ho dovuto comunque copiare i file a mano. I nuovi file device-side hanno nomi diversi dai precedenti e più precisamente sono: rtf3_5.dll e rtfhost3_5.exe. Tali file si trovano sempre nella directory dell'SDK del .NET CF 3.5 x:\program files\Microsoft.NET\SDK\CompactFramework\v3.5: ricordatevi di scegliere poi la directory corretta in base al processore del device; per gli emulatori si utilizza sempre la versione ARM.
Nella prossima immagine la directory con gli strumenti lato PC di sviluppo. Oltre al .NET CF RPM, troviamo LogViewer, già presente nella versione 2.0 SP1/SP2 e due nuovi strumenti:

Il primo NETCFCLRProfiler è una versione ridotta (e per la verità anche diversa) del Profiler del Framework completo. Consente di analizzare nel dettaglio un'applicazione in esecuzione: anche in questo caso ci si può "attaccare" ad un processo già avviato e l'installazione delle dll lato device è automatica (come sempre sono sfigato e ho dovuto copiare a mano clrpro3_5.dll sul device). Lo strumento visualizza anche sotto forma di flusso grafico le chiamate fra i vari metodi consentendo una semplice (si fa per dire quando si parla di profiling in generale) individuazione dei punti della call stack che possono dare problemi.
Il compact frameowrk 3.5 arriva con qualche dll in più per supportare LINQ e WCF (sempre in versione ridotta: entrambi sono c.a. 250KB come obiettivo nella versione finale) e i nomi dei cab sono stati leggermente rivisti.

Nella System.ServiceModel si trovano le "porzioni" del motore di WCF e il binding basicHttpBinding, mentre in Microroft.ServiceModel.Channels.Mail.* il nuovo canale (non disponibile in WCF su desktop) WindowsMobileMailBinding che consente lo scambio di messaggi SOA sfruttando il canale della posta elettronica fra device (Pocket Outlook) e Exchange 2007; ricordo che Exchange 2007 supporta il push dei messaggi verso il device.
Come sempre le sottodirectory wce400 e wce500 contengono i cab per l'installazione reale su device o emulatore in base alla versione del sistema operativo. Ricordo che Windows Mobile 6.0 si basa sempre su Windows CE 5, per precisione sulla 5.2.
System.Data.Entities contiene invece le parti applicative dell'entitiy framework, mentre il provider è contenuto sotto System.Data.SqlServerCe.Entitiy.dll che arriva con l'installazione di Sql Server Compact Edition 3.5.
SQL CE 3.5 arriva con qualche piccola novità per i device e con grandi novità su utilizzato su desktop, Tablet o UMPC.
La directory di installazione sul pc di sviluppo è x:\program files\Microsoft SQL server Compact Edition\v3.5 e si presenta così:

Come accennato, entity framework viene reso disponibile tramite System.Data.SqlServerCe.Entity, ma solo se utilizzato su PC, Tablet o UMPC: non è quindi disponibile per Windows Mobile.
L'installazione prevede diversi componenti:
1) SSCEVSTools-ENU.msi: installa i componenti design-time in Orcas sotto la classica directory x:\program files\microsoft visual studio 9\Common7\IDE. Questi componenti non devono essere distribuiti
2) SSCERuntime-ENU.msi: installa i componenti di runtime per desktop, tablet e UMPC. Sono indispensabili sia a runtime che a design time. Questo MSI installa anche i nuovi componenti per la versione desktop di SQCE 3.5: Microsoft Synchronization Services for ADO.NET (OCS) e la già citata System.Data.SqlServerCe.Entity.dll.
3) SSCEDeviceRuntime.msi: installa i componenti destinati ai device e emulatori sulla macchina. Questi componenti sono necessari per l'integrazione con VS Orcas anche sulla macchina di sviluppo.
Le novità che abbiamo bollato come minori (rispetto appunto a EntityFramework e OCS) riguardano soprattutto il query processor :
- data type di tipo timestamp
- nested query
- CROSS apply e OUTER APPLY
- CAST
- TOP (finalmente !!!!!) diventa così più semplice paginare i dati per la loro visualizzazione nei minuscoli schermi
Oltre a OCS e Entity Framework, SQL CE 3.5, se utilizzato sul desktop, fornisce la possibilità di rientrare in una transazione creata con la System.Transaction 2.0: in due parole una operazione su SQL CE 3.5 può essere inserita all'interno del TransactionScope.
I Book On Line non sono ancora disponibili.
Abbiamo accennato nei post precedenti come in Visual Studio Orcas sia possibile effettura Unit Testing su device (o emulatore): credo che questa funzionalità, affiancata dal nuovo .NET CF RPM e dal profiler, siano le novità più importanti e utili della nuova versione.
Tra l'latro in Orcas gli strumenti di Unit Testing non sono più all'interno di Team System, ma disponibili nella versione Professional, almeno a quanto ci è dato sapere oggi.
Ecco le maschere di crezione di uno unit test, praticamente identiche (tranne un settaggio) a quanto oggi disponibile in VSTS:


Nella seconda immagine, come si può notare, la configurazione degli host prevede il tipo Smart Device con relativa piattaforma e scelta fra device e emulatore.
Se si crea una performance session su uno Unit Test il codice viene fatto girare sul desktop.
Anche senza l'automatismo in VS Orcas, oggi è possibile eseguire unit test su codice mobile, creando un progetto desktop con i sorgenti mobile linkati al suo interno e oppure compilazioni condizionali nel caso in cui il codice faccia uso di dispositivi, tipo lettore di codice a barre ad esempio, non disponibili sul desktop. Fra qualche giorno posso postare un mio articolo, scritto per Infomedia, proprio su questo argomento. La demo allegata all'articolo è già disponibile sul mio sito Think Mobile all'indirizzo http://thinkmobile.it/files/folders/mmdcii/entry5896.aspx.
Il nuovo Device Emulator 3.0 si presenta così:

A parte la user interface pressochè identica, è possibile salvare la configurazione degli emulatori con Save As e riconfigurare l'emulatore. Il file di configurazione (.defcfg) è anche molto semplice da modificare a mano per cambiare al volo qualcosa senza ricorre alla user interface e soprattutto per poter scambiare la configurazione degli emulatori fra i membri di un team di sviluppo senza doverla ricreare su ogni PC di sviluppo.

Dopo la nostra DevCon 2007 proseguiamo con SQL CE 3.5 e soprattutto con LINQ e WCF su mobile.
Alla prossima.
Abbiamo definito anche la seconda Bonus Session: era già stata pubblicata nell'agenda fin dall'inizio e abbiamo deciso di tenerla in questo slot.
Grazie ai vostri feedback sulla sessione VSTS abbiamo preso un'altra decisione importante:
1) La sessione su VSTS sarà di taglio introduttivo ma con esempi basati su EstatesManagement 3.0, la nostra applicazione di esempio di cui abbiamo già parlato in questo blog. In pratica vedremo come funzionano i vari strumenti posizionandoli nel modo corretto rispetto ad una applicazione.
2) Abbiamo introdotto una nuova sessione: PRE13 per rispondere ad alcuni quesiti che normalmente ci vegono fatti nei nostri corsi o consulenze architetturali; in allegato il dettaglio della nuova sessione.
L'introduzione del nuovo ha scatenato una serie di modifiche in cascata agli slot dell'agenda: non sono cambiate le altre sessioni, ma per cercare di trovare il miglior posizionamento possibile e evitare sopvarapposizioni di argomenti fra le due sale abbiamo dovuto spostare alcuni slot da una sala all'altra in diversi orari; le modifiche di timing riguardano solo il secondo giorno. L'agenda è disponibile sempre sotto http://devcon.devleap.com/agenda.aspx
PRE13
Implementing .NET distributed applications for everyday solutions (for the “Gestionale”)
16/05/2007 - 12:15-13:30
Speaker: Roberto Brunetti & Paolo Pialorsi
Descrizione: A DevCon 2005 abbiamo presentato un’idea di architettura di un’applicazione .NET 2.0 (Estates Management) basata su entità di business che “viaggiano” fra i numerosi layer applicativi.
La nuova versione della nostra applicazione è composta da 70 progetti che utilizzano Windows Workflow Foundation e Windows Communication Foundation arrivati con .NET 3.0.
Sono due i problemi da affrontare su un modello applicativo così articolato:
1) Implemetare il codice dei vari layer per ogni entità di business per le operazioni più comuni: scrivere questo codice, simile per ogni entità, è un’operazione lunga e costosa
2) I modelli applicativi basati su entità vengono percepiti erroneamente come “bloccati e chiusi”.
In questa sessione vedremo dapprima Guidance Automation Toolkit e Guidance Automation Extension per l’implementazione del modello applicativo e la generazione di codice con un esempio che produce alcune dei layer di Estates Management per poi rendere elastico (nel senso di estendibilità) il modello basato su entità.
Le applicazioni reali che scriviamo per i nostri clienti si basano su questo modello applicativo, anche se, chiaramente abbiamo poi centralizzato tutta una serie di funzionalità in un framework applicativo che referenziamo in ogni progetto.
Argomenti trattati:
- Architetture applicative
- GAX-GAT
- Modellazione di entità
A DevCon 2007 abbiamo due slot dedicati a Visual Studio Team System: l’idea originale della sessione è quella di mostrare il prodotto su un’applicazione che i partecipanti alle precedenti edizioni conoscono e che si è arricchita rispetto all’edizione 2005 di
1) Accesso asincrono al BIZ e DAL
2) Utilizzo efficiente del Broker di SQL Server
3) Interfaccia Windows Presentation Foundation che sfrutta il BIZ Layer presente
4) Windows Communication Foundation per la gestione delle comunicazioni
5) Windows Workflow Foundation
6) Merge Replication integrata per Smart Client
Il risultato sono 65 progetti Visual Studio che faranno compagnia ai partecipanti in varie sessioni della conferenza e che segue il nostro modello di sviluppo delle applicazioni reali che sviluppiamo per i nostri clienti. Alcune informazioni più dettagliate sono disponibili quì
Alcuni partecipanti mi hanno scritto direttamente chiedendo il livello della sessione in conseguenza del fatto che non utilizzano ancora Team System. Da qui la domanda estesa a tutti i partecipanti: quanti di voi utilizzano Team System ? Se nessuno dei partecipanti lo utilizza realmente ha senso scendere un attimo con il livello e fare una introduzione a tutti gli strumenti della suite vedendoli sul progetto reale, senza dare per scontato niente.
Come sapete vogliamo confezionare una conferenza da cui possiamo avere il maggior ritorno in termini di investimento:
· è inutile sparare in alto su un argomento che ancora in Italia non ha preso piede
· è più efficace introdurre tutti gli strumenti
· Vorremmo comunque evitare il classico esempio Hello World (un client WinForm che chiama un WS) che resta fine a se stesso, presentando il tutto comunque applicato ad una applicazione composta da 65 progetti in modo da dare subito una collocazione corretta agli strumenti
- Quanti dei partecipanti a DevCon sono venuti a settembre al VSTS Day organizzato da noi a Segrate ? In quell'occasione abbiamo visto una introduzione agli strumenti su un fac-simile di una applicazione con una decina di progetti.
Facci sapere direttamente il tuo parere, rispetto ai quesiti posti, scrivendo direttamente a roberto@devleap.it
Hope useful per tutti i partecipanti.