...And it sounds like a whisper (cit.) Revolution è il codename della nuova versione del sito UGIdotNET, (in parte) pre-pre-pre-visionabile qui: http://vnext.ugidotnet.org. Perchè "Revolution"? Perchè è riscritto "from scratch", da zero. Tempo addietro provai a portare la codebase attuale verso la v2 del framework, ma ad un certo punto capii che sarei riuscito "solo" ad introdurre alcune feature del nuovo framework, senza goderne davvero dei benefici. Ed allora... Revolution. Revolution perchè oggi posso "barare" e partire nello sviluppo da basi differenti rispetto a quelle a mia disposizione nel lontano 2001, quando realizzai il "core" della codebase che, in un modo o nell'altro, "regge" comunque l'elevato traffico del sito. Dico "barare" perchè oggi posso:
- Realizzare un Domain Model in maniera più consapevole e con una comprensione decisamente maggiore dei "requisiti" dell'applicazione
- Usare NHibernate per mappare il modello sul db e vivere felice. Peggio (o "meglio", dipende dai punti di vista) ancora, posso fare "copia&incolla" della Unit of Work e del Query Object implementati per NSK e aver strutturalmente eliminato in pochissimo tempo il "problema" dell'acceso ai dati (la licenza di NSK lo permette previa citazione degli autori originali, ma che credibilità avrebbe una codebase che dovesse citare il mio nome? )
- Usare MVC per la GUI, generalizzando il controller quanto baste per poterlo condividere tra view differenti ma simili dal punto di vista del ruolo (template method anyone?)
Non ho ancora integrato i fix in NSK, ma lo farò ASAP. Sviluppando quanto (poco) ad oggi pubblicato, ho anche avuto la fortuna di:
- Completare l'implementazione del Query Object aggiungendo la possibilità di esprimere clausole di ordinamento. Mi fa piacere, perchè in vista della imminente nuova edizione del corso "OOD e architettura delle soluzioni .NET" mi ritrovo bello pronto un esempio di UoW più circoscritto rispetto a qllo di NSK, e sicuramente più utile in quel contesto. (BTW, visto che ho richieste in tal senso ne approfitto per comunicare che ci sono ancora alcuni -pochi- posti liberi per il succitato corso)
- Trovare un paio di bug nel provider Hibernate-based di NSK, e fixarli. E' la chiara dimostrazione che ultimamente Janky dedica troppo tempo a Supertangas (il sito) e si distrae, ma lo perdoniamo perchè lo fa per una buona causa.
E veniamo ai lati "spinosi" della vicenda... Già sento qualcuno chiedere: "Ma perchè non metti mano prima al blog engine?" Facile: perchè il blog engine non fa storia a sè, ma è integrato nel sito. Avete mai notato (gusto per fare un esempio) che:
- registrandosi al sito, in realtà si crea contestualmente il proprio blog?
- sono ancora supportati indirizzi quali questo? http://www.ugidotnet.org/myprofile/blog/BlogReader.aspx?MemberID=4 In pratica, ci sono degli handler che mantengono validi gli url di 4 anni addietro, quando "varammo" il supporto ai blog mentre .Text nemmeno esisteva. Potete non crederci, ma vi assicuro che le sottoscrizioni che usano i vecchi indirizzo sono *tante*.
Ergo, per cambiare il motore di blog (pur adottandone uno già pronto, come -per esempio- SubText) bisogna in ogni caso mettere mano al sito, e allora tanto vale farlo su una codebase decente. L'uso della UoW e del Query Object, infine, mi permette di non far emergere il dialetto di query (SQL o HQL che sia) fino al livello applicativo rendendo praticabile, se ADO.NET EF dovesse mantenere le "promesse" (ossia se sarà *diverso* da DLINQ), lo spostamento da NH all'ORM integrato nella vnext del framework.
Non ci sono tempistiche, ma spero cmq di "togliermi dalle scatole" questo "lavoro" nel minor tempo possibile :-)
Infine... "Revolution" perchè lo sanno tutti che dopo "Reloaded" c'è, appunto, "Revolution" <g>
Technorati tags: UGIdotNET
posted @ venerdì 5 gennaio 2007 04:05