febbraio 2010 - Post
Il 25 Febbraio nella sala azzurra dell’università Federico II di Napoli, sede di monte sant’angelo, si terrà il gameday: una mattinata di sessioni gratuite sullo sviluppo videoludico con tecnologie microsoft.
Io e Antonio siamo parte dello staff organizzativo come MSP, ci troverete quindi lì ad accogliervi calorosamente.
Vi aspettiamo.
Anche se con un po’ di ritardo volevo raccontarvi un po’ com’è andato questo evento dotnetcampania tenutosi venerdi scorso a città della scienza a Napoli. La sala non era grandissima ma siamo riusciti a riempirla, i contenuti in agenda erano tanti e come prevedibile abbiamo un po’ sforato con i tempi (specialmente io!), ma i feedback sono stati molto positivi.
Molti gli amici in sala, ma anche tante aziende di napoli che non conoscevamo, il che ci fa veramente piacere! Si parte quasi in orario, un po’ di presentazione del team, un po’ di notizie sulle nostre attività, un po’ di indicazioni su come aiutarci a fare in modo che eventi del genere non rimangano isolati. Si parte con Carmine, che ci mostra come realizzare con expression design ed expression web un layout da zero per un sito web, in particolare ci ha mostrato come ha realizzato il layout del sito in costruzione del nostro sponsor Bc Soft.
Arriva il mio turno, purtroppo ho sforato un bel po’ con i tempi (scusami ale!!!) perchè mi sono lasciato un po’ prendere dalla parte architetturale della realizzazione di applicazioni n-tier, ho dovuto quindi mostrare velocemente le demo di asp.net web forms e asp.net mvc per mostrare a grandi linee a quali requisiti rispondono e quando scegliere uno piuttosto che un’altro.
Ed ecco finalmente uno dei momenti che più attendevo, e penso che con me, anche molti ospiti siano stati contenti di assistere alla sessione di Alessandro sulle varie tecniche di realizzazione di un controllo Ajax. Sessione veramente interessante, nonchè egregiamente (anche se a causa mia velocemente) portata a termine dal nostro carissimo alessandro.
Devo dire che il pubblico era attentissimo a tutte le sessioni, e visti i feedback posso dire che hanno apprezzato molto i contenuti che i più hanno reputato utili al loro lavoro quotidiano.
Durante la sessione di Alessandro arriva il nostro ospite d’onore: Fabio Cozzolino, presidente di DotNetSide, che ci ha presentato WCF con una bravura e una semplicità veramente notevoli. Inutile dire che è stato uno dei momenti più seguiti della giornata, nonostante la stanchezza accumulata nella mattinata. Per motivi di dimenticanza collettiva avevamo a disposizione solamente due cassette per le riprese, quindi abbiamo dovuto scegliere cosa registrare e cosa no; la buona notizia è che tra le due scelte c’era anche Fabio e potete rivedere nella sezione Media del nostro portale!
Come non chiedergli una foto ricordo!
Una piccola pausa e si riprende con il nostro Antonio, che ci presenta Silverlight e i RIA Services. Le sue esilaranti demo hanno sicuramente contribuito a tenere alta l’attenzione di un pubblico ormai abbastanza provato dal peso della giornata, e che attende con trepida attesa l’ultima sessione…
Anche se in tremendo ritardo arriva il grande momento: il nostro Emanuele ci presenta Mono… Anche in questo caso abbiamo la registrazione!
E finiamo con la premiazione di alcuni partecipanti che hanno resistito fino in fondo, con alcuni libri offertici gentilmente dal nostro sponsor FAG:
Infine un grazie di cuore alle nostre attiviste Alessandra e Marilena (e Miriam), che sfidando le intemperie hanno con grande professionalità fornito il servizio di accoglienza e assistenza all’evento:
Un grosso grazie anche a tutti gli sponsor: Computer Forensic, FAG, Crionet, BC Soft e Microsoft! Un grazie di cuore a tutti i partecipanti. Alla prossima!
E’ stato pubblicato su DotNetCenter il mio primo articolo di una serie sul pattern Model-View-ViewModel:
http://dotnetcenter.it/articles/10/MVVM-per-la-realizzazione-di-client-WPF.html
Spero sia di vostro gradimento. Inutile dire che qualsiasi feedback da parte vostra è ben accetto nonchè graditissimo!
Michele
Al momento solo per gli abbonati MSDN, ma tutti gli altri devono semplicemente attendere domani (o forse di più se le richieste intaseranno i server…):
http://blogs.msdn.com/jasonz/archive/2010/02/09/announcing-vs2010-net-framework-4-release-candidate-rc.aspx
Per chi come me ha cominciato ad usarlo in produzione (fortunatamente interna…) è sicuramente una splendida notizia!
Dopo tanto parlare eccoci a quella che è stata definita all’unanimità la sessione più bella della serata: la cena! Siamo andati tutti al RoadHouse in via rivoltana:
Veramente una bellissima serata! Abbiamo mangiato l’impossibile…e la coda alla cassa lo ha dimostrato! Vi dico solo che alla fine ci hanno regalato il limoncello! Ah, dimenticavo, io non l’ho assaggiata ma la torta sembrava buonissima….

Alessandro Scardova ci parla di prototipi dell’interfaccia utente.
Prototipo concettuale: il Mock-up
- Da forma ad un0idea
- Bassa fedeltà
- Orizzontale
- Veloce (tools)
- Limiti
ma il limite forte è che il mock-up è statico! Grazie a Sketch Flow possiamo rendere dinamico il prototipo, in modo che il cliente riesca con poco sforzo a darci feedback su quanto realizzato. La funzionalità è oggi una delle chiavi di successo del software: facilità d’uso, ergonomia, soddisfacimento delle aspettative.
Prototipo funzionale:
-
Funzionalità
-
Non funziona :D
-
media fedeltà
-
Orizzontale
-
Stessa tecnologia
-
Usability
-
Tools (WPF & SL)
Nel team va aggiunta una nuova figura: User Experience Integrator:
-
Una nuova figura professionale
-
Studia la usability delle applicazioni
-
Tramite tra il creativo e il team
E si va subito con una demo! Alessandro ci mostra blend3 + sketchflow creando un progetto da zero, in particolare una WPF Scketchflow Application (l’alternativa è quella silverlight).
Per testare la user interface possiamo invece creare un prototipo “funzionante”, che è diverso da funzionale:
-
UI Test
-
Alta fedeltà
-
Verticale
-
Stessa tecnologia
-
Validazione
-
Input utente
-
Logica business
-
Backend fake
-
Tools (.NET)
Sono utilizzati per validare la logica di business. Concludendo:
Ed ecco Andrea che accende il suo mac…. :D, sì, sta usando un mac con Windows 7 Ultimate virtualizzato! E’ sempre un grande!
Si parte con le solite definizioni di software di qualità (ISO/IEC 9126), architettura (ISO/IEC 42010) e UML (ISO/IEC 19501). Guadatevi i video, perchè non posso riportare i gesti che sta facendo…. Riassumo: siamo pagati per soddisfare i requisiti, non per divertirci!
Progettare significa:
-
raccogliere requisiti
-
formulare i requisiti
-
effettuare scelte “requisite driven” tenendo a mente che “architecture is hard to change”
-
esprimere le scelte mediante view
-
[opzionale] salva la cheerleader, salva il mondo :D
E si va con un bel case study: Progetto Gutenberg – Amiacque – Managed Design. Amiacque è il consorzio Acqua Potabile della provincia di Milano, 200+ comuni serviti, 2M+ utenti, azienda pubblica, Portale “legacy” implemenato in PHP su MySQL. bisognava in pratica fare l’home banking dell’acqua…poi volevano anche un CMS. Le funzionalità richieste sono state:
-
Sportello per clienti finali
-
Sportello per amministratori
-
Pagamento on-line
-
opportune funzionalità di backoffice
-
Oracle RAC
-
Integrazione con sistema commerciale
Concordanza:
-
Accessibilità (è una PA)
-
registrazione degli accessi effettuati da AdS in accorso al provvedimento GU n.300 emesso dal Garante per la protezione dei dati personali in data 24 dicembre 2008
-
rispetto della normativa attinente gli amministratori (di condominio)
Disponibilità:
Usabilità:
E’ finito il tempo… :D Ma c’è sempre la cena!
Corrado Cavalli ci presenta WCF RIA Services illustrandoci come questa tecnologia ci permetta di realizzare applicazioni LOB con Silverlight in maniera RAD. L’insieme della parte di presentazione e la parte che sta sul server rappresenta la classica Rich Internet Application, il che significa avere a che fare con applicazioni n-tier.
Alcuni aspetti problematici da gestire
risolvere questi problemi rappresenta uno sforzo non indifferente, possiamo però usare i RIA Services per semplificarci la vita. Parliamo di un insieme di framework, tools e servizi per la semplificazione delle problematiche RIA
-
Data Shaping (Paging, Sorting, Filtering)
-
Rules (Validazone, Autorizzazione, User Settings, Concorrenza)
-
Ottimizzazioni (invio batch di dati al server9
Lo scopo è rendere fruibili le operazioni e le entità di business nella maniera più semplice e naturale possibile. Cosa da non sottovalutare è che non sono legato da uno specifico data acces (però usare EF & L2S aiuta!). Per utilizzare subito questa tecnologia basta scaricare i WCF RIA Service per Visual Studio 2010 Beta 2.
Corrado ci mostra subito una demo, realizzando un catalogo musicale (il suo commento: perlomeno non ho usato northwind…:D) (per la demo vi rimando ai video delle sessioni che saranno disponibili nei prossimi giorni).
Come funziona? Viene creata un’infrastruttura che lega client e server:
-
Runtime via WCF
-
Statico (Code generation e Shared code via Visual Studio)
-
il legame è trasparente per lo sviluppatore
-
Enable .NET RIA Services link in Visual Studio
Il punto cruciale è la classe DomainService, che rappresenta l’insieme delle operazioni CRUD messe a disposizione lato server. Può essere autogenerata da Visual Studio, possiamo usare LinqToSqlDomainservvice e LinqToentitiesDomainService. L’altro oggetto cruciale è il DomainContext che è la versione lato client del DomainService, che ci offre un insieme di elementi quante sono le entità esposte dal servizio, un oggetto EntityQuery<T> quante sono le operazioni di lettura espose dal servizio, il metodo load(EntityQuery<T>) che esegue la query invocando il relativo metodo del server, rejectchange e submitchange. E’ fortemente basato su delle convezioni, ad esempio ogni metodo del servizio che torna un’entità genera una query GetXXX e ReturnXXX, deve ritornare <T>, IEnumerable<T> o IQueryable<T>.
Ad ogni tipo esposto dal DomainService possono essere associati dei metadati che controllano la generazione lato client:
Posso usare degli attributi di validazione:
-
Required
-
StrinLenght
-
RegularExpression
-
Range
-
Display
-
Custom
Oltre alle classiche funzionalità di CRUD, possiamo invocare un qualsiasi metodo di business utilizzando l’attributo [Invoke] : il metodo così decorato rappresenta un mio classico metodo esposto con wcf (lato client diventa un metodo sul context). se voglio che il metodo sia invocato alla SubmitChanges uso l’attributo [Update] sul metodo.
La unit of work viene elaborata secondo questa sequenza:
-
Submit – riceve il changeset
-
authorizeChangeSet – verifica i permessi
-
ValidateChangeSet – esegue la validazione
-
ExecuteChangeSet – esegue le operazioni
-
PersistChangeSet – invoca la submit del context
-
ResolveChangeSet – processa le unit che hanno avuto problemi di concorrenza
tutti virtual che posso overridare. Un ulteriore attributo, [Resolve], permette di definire la nostra logica di risoluzione della concorrenza. E’ possibile inolte utilizzare lo stesso meccanismo di autenticazione, ruoli e profili di ASP.NET. lato client la parte di autorizzazione è esposta da WebContext.
Tutti i domain services in una web application generano il relativo context, quindi se ho due applicazionni silverlight che usano i miei servizi possono realizzare una ria services class library e referenziarla nella mia applicazione silverlight.
Perdonate eventuali imprecisioni ma era difficile seguire e scrivere conteporaneamente! Vi lascio con una foto emblematica del risultato della sessione:

Non potevamo non esserci all’ultima tappa del community tour, specialmente se è UgiDotNet a chiudere questa serie di eventi. Io e il buon Antonio, da bravi napoletani a Milano, ci siamo persi tra metro e autobus, ma alla fine siamo riusciti ad arrivare in orario! si parte con una keynote di Lorenzo, Andrea e Raf che ci illustrano l’agenda della giornata. Ci sono state due track, noi abbiamo seguito le prime due di quella Web e l’ultima della track Envisioning. Purtroppo in sala non c’era segnale wind quindi non ho potuto postare live, dovrete accontentarvi della differita! :D