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 giovedì 23 marzo 2006 12.23

Feedback

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

left by Antonio Di Motta at 23/03/2006 12.53 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.......
:)

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

left by Andrea Boschin at 23/03/2006 13.43 Gravatar
gran bel post Janky... la battuta del PVC poi è impagabile! :-D:-D

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

left by Roberto Messora at 23/03/2006 15.51 Gravatar
Molto ben fatto, complimenti, ma la domanda ora nasce spontanea. Questa architettura è comunque articolata, anzi, direi che è necessariamente articolata perchè si addice ad una applicazione enterprise. Qundi: quando un'applicazione si dice enterprise?
la domanda è volutamente provocatoria perchè non posso pensare (ed il quesito me lo sono posto più di una volta) che un modello di questo tipo possa essere comunque applicato ad ogni singola applicazione che sviluppiamo indipendentemente dalla sua dimensione.
Esistono a mio avviso applicazioni che soffrirebbero di elefantiasi se applicassimo loro un modello completo come quello che hai mostrato.
Sarebbe molto interessante marcare con un colore dal giallo al rosso i blocchi dello schema andando ad indicare il grado di fabbisogno che si ha di ognuno di loro: quelli rossi sono quelli irrinunciabili, quelli gialli quelli di cui si può fare a meno a certi livelli o che cmq possono essere affogati in blocchi a maggiore importanza.
O no?
Saluti

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

left by Giancarlo Sudano at 23/03/2006 16.26 Gravatar
Per antonio:
Sono andato a riguardare il progetto di NStruts e sono ben felice di vedere che adesso ci sono delle news del 2006!
Meno male...l'ultima volta che ho visto le news erano del 2003 o del 2004...ecco cosa mi aveva lasciato perplesso...
Sarà anche italiano lo sviluppatore...ma sbaglio o ci hai messo le mani anche tu? Forza così!...è una bella notizia per me...
Cmq manca ancora di documentazione...è una pecca per chi approccia per la prima volta...e questo limita molto la diffusione...se vedi MonoRail è pieno di screencast...

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

left by Antonio Ganci at 23/03/2006 17.35 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 ;-)

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

left by Technology Experience at 23/03/2006 22.25 Gravatar

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

left by Tommaso Caldarola at 24/03/2006 8.59 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.

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

left by papo we(b)log at 29/03/2006 13.43 Gravatar

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

left by papo we(b)log at 29/03/2006 13.45 Gravatar
Comments have been closed on this topic.