The Dark Side of .NET

Il lato oscuro della forza!

febbraio 2010 - Post

Game Day a Napoli

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.

Banner

Io e Antonio siamo parte dello staff organizzativo come MSP, ci troverete quindi lì ad accogliervi calorosamente.

Vi aspettiamo.

Web Development Day: grazie a tutti!

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.

DSC_0441 DSC_0443
DSC_0444 DSC_0445

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.

DSC_0452 DSC_0453
DSC_0456 DSC_0457

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.

DSC_0476 DSC_0477
DSC_0478 DSC_0479

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.

DSC_0480 DSC_0481
DSC_0482 DSC_0484

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.

DSC_0487 DSC_0489

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!

DSC_0505 DSC_0506
DSC_0504 DSC_0510

Come non chiedergli una foto ricordo!

DSC_0516 DSC_0500

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…

DSC_0522 DSC_0530
DSC_0532 DSC_0534

Anche se in tremendo ritardo arriva il grande momento: il nostro Emanuele ci presenta Mono… Anche in questo caso abbiamo la registrazione!

DSC_0536 DSC_0540
DSC_0548 DSC_0547

E finiamo con la premiazione di alcuni partecipanti che hanno resistito fino in fondo, con alcuni libri offertici gentilmente dal nostro sponsor FAG:

DSC_0552 DSC_0553
DSC_0555 DSC_0559

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:

DSC_0450 DSC_0468
DSC_0458 DSC_0475

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!

Primo articolo della serie su WPF e MVVM

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

Disponibile la RC di Visual Studio 2010!

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!

UgiDotNet CT: la cena!

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:

SNC00298 SNC00299
SNC00300 SNC00302

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

SNC00301

UgiDotNet CT: Prototopizzazione con Alessandro Scardova

Alessandro Scardova ci parla di prototipi dell’interfaccia utente.

SNC00295

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)
    • SketchFlow

Nel team va aggiunta una nuova figura: User Experience Integrator:

  • Una nuova figura professionale
    • Oltre il “devigner”
  • Studia la usability delle applicazioni
    • non solo il web
  • 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)
    • Blend
    • Visual Studio

Sono utilizzati per validare la logica di business. Concludendo:

  • Ogni fase ha il suo prototipo
  • Il prototipo si butta
    • Ma non le idee
UgiDotNet CT: Architecting Enterprise Web Solutions con Andrea Saltarello

Ed ecco Andrea che accende il suo mac…. :D, sì, sta usando un mac con Windows 7 Ultimate virtualizzato! E’ sempre un grande!

SNC00289 SNC00291

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!

SNC00290

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

  • SLA 13x7 (7 AM – 8 PM)

Usabilità:

  • Gli utenti di backoffice (operatori9 devono avere una UX simile a quella attuale
  • Lo sportello è un “home banking”

E’ finito il tempo… :D Ma c’è sempre la cena!

UgiDotnet CT: WCF RIA Services == RAD for Silverlight

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.

SNC00285 SNC00286

Alcuni aspetti problematici da gestire

  • Sincronizzazione dei client
  • Propagazione eccezioni
  • Batch Mode

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

SNC00287

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:

  • [Name].metadata.cs
  • E’ una classe parziale decorata con MetadataTypeAttribute
  • Permette di arricchire i tipi senza agire sui tipi stessi (POCO)

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:

SNC00288

UgiDotNet Community Tour: noi ci siamo!

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

SNC00283 SNC00284