venerdì 26 novembre 2010

Enterprise Design: il sito non bastava - parte 2

La lettura del libro "Professional Asp.Net Design Patterns" mi ha portato a riflettere su come organizzare un progetto che fosse più adeguato alle esigenze dell'azienda.

La soluzione di Visual Studio è composta da 6 progetti. I primi cinque sono librerie di classi, l'ultimo è un'applicazione web MVC 2.

I progetti descrivono anche i vari strati in cui ho diviso la soluzione.
Si parte dalla libreria "Model" che contiene le classi che descrivono le entità del dominio. Nel mio caso: il negozio, il prodotto, le categorie merceologiche, il marchio, le categorie editoriali. La libreria si occupa di modellare il comportamento di questi oggetti, con la validazione dei dati.

La persistenza dei dati è gestita tramite le classi del Repository. In questo caso ho implementato un pattern noto cercando di ottenere il massimo disaccoppiamento della base di dati concreta. Questo è ottenuto con l'utilizzo di Interfacce ad esempio la persistenza dell'entità categoria merceologica viene gestita da una classe categoryRepository e dall'interfaccia ICategoryRepository. Gli altri strati utilizzeranno chiamate a metodi dell'interfaccia e non avranno in alcun modo bisogno di sapere quale e' l'implementazione concreta di essi.

La libreria AppService contiene le classi siteservice e shopservice che sono le due classi fondamentali: shopservice in pratica realizza l'API del sistema esponendo tutti i metodi utilizzati dall'applicazione, la classe siteservice adatta questi metodi alla visualizzazione sul sito sfruttando delle classi mapper tra gli oggetti del dominio e le classi dello strato di presentazione.

La libreria ViewModel contiene la modellizzazione dei dati necessari alla visualizzazione delle pagine del sito per ora, ma infuturo potrà contenere visualizzazioni diverse dalla pagina web. Le Pagine derivano dalla classe BaseView che in pratica contiene gli oggetti comuni a tutte le pagine.

Infine la libreria Infrastructure che contiene classi per lo più statiche e che implementano metodi o servizi comuni.

Ultimo progetto è l'applicazione web asp.net mvc 2. Su questo non c'e' molto da aggiungere se non che i controller chiameranno istanze della classe siteservice con il compito di istanziare la giusta classe del viewmodel passata come modello alla view del sito.

Nel prossimo appuntamento un pò di teoria

martedì 23 novembre 2010

Enterprise Design: tentativo di andare oltre il solito cms

Oggi il primo test: tutto bene. Il mio ultimo lavoro procede verso la pubblicazione. Il countdown segna -10 giorni più che sufficienti per completare la prima fase.

Vorrei scrivere una serie di post per descrivere tutte le fasi che hanno portato dall'idea alla realizzazione.

Inizio con una breve introduzione che descrive il sistema.

"Il sistema deve funzionare come http://shopmilesandmore.com, quindi deve esserci una vetrina di negozi convenzionati, il visitatore potrà cercare per categoria merceologica o per nome del negozio, arrivati sulla scheda di dettaglio del negozio dovrà necessariamente inserire il numero della sua card. Ogni acquisto effettuato sui siti partner deve essere tracciato in modo che sia possibile riconoscere un tot di punti a fronte dell'acquisto."

Applicazione web su piattaforma .Net 4.0, database Microsoft Sql Server 2008, per il presentation layer un sito asp.net MVC 2.

Nel prossimo post la descrizione dell'architettura.