Piccolo recap:
- A partire dal post di Giulio sul forum GUISA, il mapping fluent/POCO/code only con EF4 è la domanda che ultimamente ricevo più spesso. Un po’ per rispondere a tutti in “colpo unico”, un po’ perché la documentazione è effettivamente molto carente (in fondo si tratta di una feature in CTP3), ho iniziato a lavorare “seriamente” sul DAL EF4 di NSK: è ben lungi dall’essere finito, ma la “raffica” di check-in di ieri dovrebbe iniziare ad essere un significativo supporto per coloro che desiderassero intraprendere questa strada
- Con la definizione dei software contracts per l’interfaccia IRepository<T>, l’architettura dei repository è quasi definitiva. Seguirà cmq un post dedicato a questo tema (il tema è “repository”, per i software contracts rimando invece qui e qui).
- Anche lo stack web è quasi completo ed inizia ad emergere la nostra proposta per “Model 3”, la revisione di MVC che abbiamo approntato in Managed Designs e che usiamo nei nostri progetti web recenti. Anche in questo caso, seguirà un post dedicato a Model 3
- Poichè Unity non gode di una “suburbia” di facility paragonabile a quella esistente per Castle e Spring, ho introdotto una factory WCF sottomessa al container IoC contenuto nella Enterprise Library: è collocata nell’assembly ManagedDesigns.Nsk.ServiceModel ed è una versione “sanitizzata” di quella che usiamo nei nostri progetti.
- La suddetta factory è usata (a sproposito) nel progetto WPF per costruire i servizi consumati dal ViewModel, ma in questo caso è decisamente overkill per vari motivi purtroppo lunghi da “annegare” in questo post. In estrema sintesi, in bottega usiamo una nostra rielaborazione di Presentation Model che abbiamo chiamato 4VM, ed in alcuni contesti “quella” factory aiuta, ma nel backoffice di NSK è decisamente “bloated”, quindi elimineremo il passaggio da WCF, che sarà invece introdotto nella applicazione Silverlight. A valle della introduzione di questo progetto, seguirà probabilmente un post dedicato a 4VM che IMHO fornisce alcuni interessanti spunti di riflessione su MVVM.
- Lo stack di NSK è basato su un idioma architetturale che in azienda chiamiamo LET, acronimo di Layered Expression Trees: l’idea è che i vari layer (che fondamentalmente sono dei servizi che incapsulano il Domain Model) manipolano sequenze “palleggiandosi”, a partire dai repository, delle istanze di IQueryable<T>. Ogni layer/servizio manipola la sequenza apportandovi i propri filtri/proiezioni/etc etc e solo ai “piani alti” si fa il cast ad IEnumerable eseguendo la query all’ultimo momento, quando è già completa di tutto e può essere eseguita estraendo e restituendo i soli dati necessari alla singola view o, più in generale, caso d’uso. Seguirà cmq un post dedicato a LET.
Un po’ di roadmap: incredibile ma vero, ho finalmente dato una direzione al progetto (ed è il motivo per il quale sono “comparsi” i diagrammi dei casi d’uso <g>). NSK diverrà uno Starter Kit di e-commerce “pret –a-porter”, dotato di:
- sito pubblico realizzato con ASP.NET MVC
- backoffice realizzato con “MVVM over WPF”
- Applicazione mobile realizzata con “Silverlight over WP7”
Ovviamente, da un certo momento in poi lo “storico” database Northwind sarà insufficiente, e quindi il progetto adotterà uno schema ad hoc: non so ancora se evolverò lo schema attuale (fornendo un script di “adattamento”) o ne realizzerò uno ex novo, di sicuro il cambio dei nomi degli assembly e dei namespace (abbandono di “Northwind” a favore di “NSK”) e l’implementazione del Party pattern per il dominio sono propedeutici a questo cambiamento.
In generale, lo Starter Kit “cresce” man mano che effettuo il backporting di codice/strategie dai progetti Managed Designs alla codebase di NSK e, giacché lo faccio da solo e nel tempo libero, prima di vedere completata la v1.0 (codename “Lullaby”), temo ci vorrà ancora un (bel) po’ di tempo. L’ottima notizia, però, è che alcuni colleghi (Gianluca, Naty ed Omar) hanno adottato il progetto: giusto il tempo di organizzare una cena di kick off del progetto, e spero che la project velocity aumenti considerevolmente :-)
Così è, se vi pare (cit.)