jankyTechture [#1]: un modello per le applicazioni Enterprise

...effettivamente io non dovevo scrivere niente del genere, ma è stata tutta colpa dell'autobus ieri che ha ritardato...:-)
Stavo preparando un paio di post per condividere un lavoro che ho fatto molti mesi fa riguardo ad un framework(ino) di validazione semplice ma molto efficace, e per proporlo stavo disegnando il solito grafico dei layer e delle varie dipendenze...poi è uscito fuori il mostro:

(clicca per ingrandire)

:-) a me serviva solo la parte dove si vede il Validation API, ma visto che è venuto così carino 4 chiacchiere sul mio modo di vedere le cose le faccio volentieri:

Premessa:
Ovviamente non mi sono proprio inventato niente, questa è solo la mia (janky)vision di come praticamente strutturo le applicazioni di fascia enterprise, visto che di varianti ce ne potrebbero essere tantissime (vedi un domain layer inlcuso nel business, uno userinterface layer incluso nel presentation, AOP si AOP no, ORM si ORM no..).
Vediamo qualche considerazione su ogni layer...

Presentation Layer
Poco da dire: è assolutamente vietato scrivere logica di business in questo livello ma questo lo sanno anche i muri. Per esperienza personale vi dico: il tempo che si può perdere nel debuggare, testare le form (sia windows, web, mobile o quello che volete voi) è veramente impressionante. Ecco perchè in questo livello non ci dovrebbe neanche essere la logica di flusso di navigazione.
il jankyPensiero sul Presentation Layer: per ogni riga di codice superflua sul Presentation far pagare 10 euro al programmatore.

UserInterface Process Layer
Qui possiamo wrappare un qualsiasi tool MVC che ci aiuta nello sviluppo, fate voi
per la parte web: MonoRail su tutti, purtroppo NStruts non è all'altezza del colosso di jakarta,
per la parte windows, il nuovo CAB (Composite UI Application Block) o il più vecchiotto UIP Application Block.
il jankyPensiero sullo UserInterfaceProcess Layer: non fatevi confondere le idee, l'MVC è una cosa seria, è il PVC quello che inquina...

Domain Layer
Qui il dominio di conoscenza del vostro cliente prende la forma di classi pure.
Il domain model di Fowler recita: "...le classi devono contenere dati e comportamento...", io sono un po più fedele al Domain Driven Design che dice che le classi di dominio dovrebbero essere il più possibile anemiche, solo property e pochi/niente metodi. Se voglio implementare un qualsiasi metodo/azione, uso la validazione e un command pattern sul Business Layer.
Il domain layer è conosciuto (non in senso biblico) da tutti i layer dell'applicazione, trasversale a tutti. Avendo pochi metodi il suo legame agli altri layer non introduce problemi di uso improprio! :-)
il jankyPensiero sul DomanLayer: Il più bello, il più astratto...il più sexy!

(To Be continued)

Print | posted on Thursday, March 23, 2006 12:23 PM

Comments on this post

# re: jankyTechture [#1]: un modello per le applicazioni Enterprise

Requesting Gravatar...
Non conosco MonoRail, ma ti posso dire che NStruts svolge bene il suo lavoro ed l'ultima versione (1.0.2) è compliant con la 1.1 di Struts.

E poi vuoi mettere è realizzato da un Italiano.......
:)
Left by Antonio Di Motta on Mar 23, 2006 12:53 PM

# re: jankyTechture [#1]: un modello per le applicazioni Enterprise

Requesting Gravatar...
In generale sono sempre stato un pò scettico con gli schemi applicativi preconfenzionati.
Vedo il rischio, come altri hanno fatto notare, di complicarsi la vita più del necessario. (io sono il primo peccatore ;))
Sono più propenso ad applicare i concetti (es: separare model da presentation, eliminare le ripetizioni, ecc.) piuttosto che le soluzioni ad hoc.
In fondo se esistesse una soluzione ottima per il problema ci sarebbe un wizard di Visual Studio che la creerebbe ;-)
Left by Antonio Ganci on Mar 23, 2006 5:35 PM

# Riassunto della giornata di oggi: C#, C#, C#, C#, C#, C#, C#, C#

Requesting Gravatar...
Left by Technology Experience on Mar 23, 2006 10:25 PM

# re: jankyTechture [#1]: un modello per le applicazioni Enterprise

Requesting Gravatar...
Rispecchia quasi in toto l'architettura messa su per il progetto al quale sto lavorando, solo una cosa, il Domain layer dovrebbe fermarsi all' UIP layer, almeno io col CAB sono riuscito a staccarlo completamente dal Presentation Layer.
Left by Tommaso Caldarola on Mar 24, 2006 8:59 AM

# non si finisce mai di imparare... e meno male!

Requesting Gravatar...
Left by papo we(b)log on Mar 29, 2006 1:43 PM

# non si finisce mai di imparare... e meno male!

Requesting Gravatar...
Left by papo we(b)log on Mar 29, 2006 1:45 PM
Comments have been closed on this topic.