Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Un'architettura di riferimento  per applicazioni enterprise  Alberto Lagna [email_address] Mario Zannone [email_address] W...
>apropos alberto.lagna <ul><li>Laureato in informatica, master in telecomunicazioni. </li></ul><ul><li>Consulente indipend...
Due parole sul JUG <ul><li>Nasce dall'idea di alcuni appassionati di programmazione e Java nel “lontano” febbraio 2002. Or...
oggetto della presentazione <ul><li>In una cucina </li></ul><ul><ul><li>il lavandino per preparare i cibi </li></ul></ul><...
Avvertenza UML exposed
agenda <ul><li>I parte </li></ul><ul><ul><li>La struttura dell’edificio </li></ul></ul><ul><ul><li>I Layers </li></ul></ul...
I parte <ul><ul><li>La struttura dell’edificio </li></ul></ul><ul><ul><li>I Layers </li></ul></ul><ul><ul><li>I Tiers </li...
La struttura dell’edificio <ul><li>Layers (piani)  </li></ul><ul><ul><li>separazione dei tipi di logica </li></ul></ul><ul...
I Layers <ul><li>I piani, dalle fondamenta all’alloggio </li></ul>
I Layers (1/3) <ul><li>Infrastrucure layer </li></ul><ul><ul><li>il più vicino al sistema operativo  </li></ul></ul><ul><u...
I Layers (2/3) <ul><li>Service layer </li></ul><ul><ul><li>è a disposizione di tutti i componenti applicativi  </li></ul><...
I Layers (3/3) <ul><li>Application layer </li></ul><ul><ul><li>funzionalità business tipiche di un'applicazione </li></ul>...
I Tiers <ul><li>Le camere dell’alloggio </li></ul>
I Tiers -  User Tier <ul><ul><li>responsabile per tutte le interazioni con l'utente. </li></ul></ul><ul><ul><li>gestisce l...
I Tiers – Workspace Tier <ul><ul><li>mantiene la sessione utente </li></ul></ul><ul><ul><li>manipola i dati dell'utente ad...
I Tiers – Business Tier <ul><ul><li>il punto in cui è implementata la logica di business </li></ul></ul><ul><ul><li>contro...
I Tiers – Resource Tier <ul><ul><li>garantisce la separazione della logica di business  </li></ul></ul><ul><ul><ul><li>dal...
Di nuovo tutti insieme user business workspace resource services infrastructure application Tiers Layers processi ed entit...
I servizi del service layer
L’applicazione
II parte <ul><ul><li>Esempi </li></ul></ul><ul><ul><ul><li>User e workspace tier </li></ul></ul></ul><ul><ul><ul><ul><li>M...
User e Workspace Tier
User e Workspace Tier Model-view-controller pattern V M C
User e Workspace Tier V M MVC:  Esempio  J2EE:  Struts
User e Workspace Tier MVC : Esempio  .Net  (e J2EE):   Maverick   (http://mavnet.sourceforge.net/)
Business Tier
Business Tier Command Pattern
Business Tier e XML <ul><li>I  messaggi  di richiesta e risposta a/da Use Case Controller possono essere codificati in XML...
Business Tier Esempio di profilazione XML (UCC) < usecase name=“multiply” > < task > < step   type =&quot;com.zzz.debug.Tr...
Esempio di messaggio XML  in ingresso al Business Tier <message> <envelope> <usecase> multiply </usecase> <principal> <ide...
Business Tier Java vs. C#  <ul><li>Con un’architettura di riferimento comune e con l’uso di XML le differenze sono meno de...
Business Tier – J2EE vs .NET J2EE .NET Use Case Controller Stateless Session EJB Stateless MTS (COM+) Component Business F...
Resource Tier
Resource Tier - Adapter Pattern
Resource Tier Tecnologie J2EE e .Net J2EE .Net Data Base JDBC Hybernate ADO .Net External Application JMS Web Services MSM...
Conclusioni <ul><li>Un’architettura di riferimento </li></ul><ul><li>Aiuta la comprensione di tecnologie nuove e  l’indivi...
D&R <ul><li>Alberto Lagna [email_address] www.whitebox.it </li></ul><ul><li>Mario Zannone [email_address] </li></ul>
Upcoming SlideShare
Loading in …5
×

Un'architettura di riferimento per applicazioni enterprise

2,279 views

Published on

Published in: Technology
  • Be the first to comment

Un'architettura di riferimento per applicazioni enterprise

  1. 1. Un'architettura di riferimento per applicazioni enterprise Alberto Lagna [email_address] Mario Zannone [email_address] Webb.it – 3 Giugno 2004 Milano
  2. 2. >apropos alberto.lagna <ul><li>Laureato in informatica, master in telecomunicazioni. </li></ul><ul><li>Consulente indipendente, lavora come architetto software. </li></ul><ul><li>Fornisce consulenza nel design e lo sviluppo di sistemi enterprise basati su j2ee e XML. </li></ul><ul><li>Ha un esperienza di più di 10 anni nella realizzazione di soluzioni ad oggetti distribuiti. </li></ul><ul><li>membro del JUGTORINO </li></ul><ul><li>Promuove l’uso di software libero e supporta il movimento open source. </li></ul>
  3. 3. Due parole sul JUG <ul><li>Nasce dall'idea di alcuni appassionati di programmazione e Java nel “lontano” febbraio 2002. Ora siamo circa 200 iscritti </li></ul><ul><li>Lo scopo e' quello di favorire l'interscambio di conoscenze informatiche e creare un punto di riferimento nel panorama degli sviluppatori Java in Italia </li></ul><ul><li>La partecipazione alle attivita' e del tutto gratuita e libera </li></ul><ul><li>Il JUG gestisce, tra le altre, una serie di attivita’ tra cui meeting, scrittura di articoli e review di libri per note case editrici </li></ul>
  4. 4. oggetto della presentazione <ul><li>In una cucina </li></ul><ul><ul><li>il lavandino per preparare i cibi </li></ul></ul><ul><ul><li>il fornello per cucinarli </li></ul></ul><ul><ul><li>il frigorifero per conservarli. </li></ul></ul><ul><li>Questa presentazione: </li></ul><ul><ul><li>i componenti fondamentali per realizzare un'applicazione enterprise aperta, portabile scalabile duratura </li></ul></ul><ul><li>Architettura di riferimento distillato dell'esperienza di anni di progettazione IT del relatore </li></ul><ul><li>Verranno introdotti i principali componenti, le loro responsabilità e le possibili scelte di distribuzione fisica. </li></ul><ul><li>Verranno proroposti mapping ed esempi concreti che utilizzano tecnologie XML, Java e C#. </li></ul>
  5. 5. Avvertenza UML exposed
  6. 6. agenda <ul><li>I parte </li></ul><ul><ul><li>La struttura dell’edificio </li></ul></ul><ul><ul><li>I Layers </li></ul></ul><ul><ul><li>I Tiers </li></ul></ul><ul><ul><li>I servizi </li></ul></ul><ul><ul><li>L’applicazione </li></ul></ul><ul><li>II parte </li></ul><ul><ul><li>Esempi </li></ul></ul><ul><ul><ul><li>User e workspace tier </li></ul></ul></ul><ul><ul><ul><ul><li>MVC pattern </li></ul></ul></ul></ul><ul><ul><ul><li>Business Tier </li></ul></ul></ul><ul><ul><ul><ul><li>Command pattern </li></ul></ul></ul></ul><ul><ul><ul><li>Resource Tier </li></ul></ul></ul><ul><ul><ul><ul><li>Adapter pattern </li></ul></ul></ul></ul><ul><li>D&R </li></ul>
  7. 7. I parte <ul><ul><li>La struttura dell’edificio </li></ul></ul><ul><ul><li>I Layers </li></ul></ul><ul><ul><li>I Tiers </li></ul></ul><ul><ul><li>I servizi </li></ul></ul><ul><ul><li>L’applicazione </li></ul></ul>
  8. 8. La struttura dell’edificio <ul><li>Layers (piani) </li></ul><ul><ul><li>separazione dei tipi di logica </li></ul></ul><ul><ul><ul><li>logica di buz </li></ul></ul></ul><ul><ul><ul><li>servizi </li></ul></ul></ul><ul><ul><ul><li>infrastruttura </li></ul></ul></ul><ul><ul><li>è diviso in tier </li></ul></ul><ul><li>Tiers (stanze) </li></ul><ul><ul><li>distribuzione logica delle funzionalità. </li></ul></ul><ul><ul><li>ciascun tier ha ruoli e responsabilità (SoC) </li></ul></ul><ul><ul><li>distribuzione fisica </li></ul></ul><ul><ul><li>scalabilità </li></ul></ul><ul><ul><li>riuso </li></ul></ul>user business workspace resource services infrastructure application infrastruttura tecnica e di comunicazione comune utilità comuni applicate tra i vari tier Tiers Layers Presentazione e indipendenza dal device sessione utente e filtro dati input processi ed entità di business risorse enterprise condivise logica di business “applicativa”
  9. 9. I Layers <ul><li>I piani, dalle fondamenta all’alloggio </li></ul>
  10. 10. I Layers (1/3) <ul><li>Infrastrucure layer </li></ul><ul><ul><li>il più vicino al sistema operativo </li></ul></ul><ul><ul><li>fornisce le funzionalità comuni </li></ul></ul><ul><ul><ul><li>trasporto, la sicurezza, i meccanismi di naming e directory. </li></ul></ul></ul><ul><ul><li>l’implementazione è responsabilità della piattaforma middleware (es l’application server j2ee). </li></ul></ul>infrastructure Layers
  11. 11. I Layers (2/3) <ul><li>Service layer </li></ul><ul><ul><li>è a disposizione di tutti i componenti applicativi </li></ul></ul><ul><ul><li>logica non applicativa </li></ul></ul><ul><ul><ul><li>autenticazione, autorizzazione, profilazione, logging, gestione delle eccezioni, tracking, configurazione, gestione degli eventi. </li></ul></ul></ul><ul><ul><li>modifica su di un servizio immediatamente a disposizione di tutti i componenti applicativi. </li></ul></ul>services infrastructure Layers utilità comuni applicate tra i vari tier
  12. 12. I Layers (3/3) <ul><li>Application layer </li></ul><ul><ul><li>funzionalità business tipiche di un'applicazione </li></ul></ul><ul><ul><li>è ulteriormente suddiviso in tier, </li></ul></ul><ul><ul><ul><li>ciascuno con ruoli diversi </li></ul></ul></ul><ul><ul><ul><li>sempre nell'ambito della stessa applicazione </li></ul></ul></ul><ul><ul><li>ospita tipologie di componenti predefinite. </li></ul></ul>services infrastructure application Layers logica di business “applicativa”
  13. 13. I Tiers <ul><li>Le camere dell’alloggio </li></ul>
  14. 14. I Tiers - User Tier <ul><ul><li>responsabile per tutte le interazioni con l'utente. </li></ul></ul><ul><ul><li>gestisce l'input che l'utente inserisce per un particolare business component </li></ul></ul><ul><ul><li>lo valida </li></ul></ul><ul><ul><li>lo trasferisce al Workspace Tier </li></ul></ul><ul><ul><li>è posizionato il più vicino possibile al software che permette l'interazione utente: </li></ul></ul><ul><ul><ul><li>x applicazione web è rappresentato da i componenti che la pagina web dinamica fa eseguire sul client (codice html e javascript di input e validazione). </li></ul></ul></ul><ul><ul><ul><li>x applicazione a web service i bindings </li></ul></ul></ul>user Tiers Presentazione e indipendenza dal device
  15. 15. I Tiers – Workspace Tier <ul><ul><li>mantiene la sessione utente </li></ul></ul><ul><ul><li>manipola i dati dell'utente ad essa associato. </li></ul></ul><ul><ul><li>fornisce la logica di business locale per la quale non è necessario accedere a risorse enterprise </li></ul></ul><ul><ul><li>passa informazioni conservate nel contesto di sessione al Business Tier nel messaggio di richiesta. </li></ul></ul><ul><ul><li>è il front end del server </li></ul></ul><ul><ul><ul><li>x applicazione web vive nel web server </li></ul></ul></ul><ul><ul><ul><li>x applicazione web services è un handler </li></ul></ul></ul>user workspace Tiers sessione utente e filtro dati input
  16. 16. I Tiers – Business Tier <ul><ul><li>il punto in cui è implementata la logica di business </li></ul></ul><ul><ul><li>controlla le business rule, aggiornamento in modo atomico e consistente delle entità enterprise </li></ul></ul><ul><ul><li>garantisce l'integrità dell'informazione enterprise, attraverso il controllo dei constraint sui dati e del contesto delle transazioni. </li></ul></ul><ul><ul><li>netta separazione dall’accesso alle risorse (del Resource Tier) x aumentare la riusabilità del codice </li></ul></ul><ul><ul><li>La granularità con cui la logica di business è esposta ha conseguenze dirette sulla scalabilità e sulla riusabilità del codice </li></ul></ul><ul><ul><ul><li>granularità fine, in cui ogni Business Function realizza una ben precisa e delimitata funzione permette di raggiungere un alto grado di riusabilità </li></ul></ul></ul><ul><ul><ul><li>se lo stesso livello di granularità viene esposto verso il Workspace Tier, l'impatto su performance e scalabilità può essere disastroso </li></ul></ul></ul><ul><ul><ul><li>L'architettura tecnica indirizza questo problema esponendo da Business Tuer verso Workspace Tier interfacce a granularità grossa </li></ul></ul></ul>user business workspace Tiers processi ed entità di business
  17. 17. I Tiers – Resource Tier <ul><ul><li>garantisce la separazione della logica di business </li></ul></ul><ul><ul><ul><li>dall'architettura dei dati </li></ul></ul></ul><ul><ul><ul><li>dalle applicazioni esterne </li></ul></ul></ul><ul><ul><ul><li>sistema più modulare, più facilmente estensibile e mantenibile, limitando l’impatto delle variazioni al solo tier interessato. </li></ul></ul></ul><ul><ul><li>comprende la logica necessaria per gestire due tipi fondamentali di risorse: </li></ul></ul><ul><ul><ul><li>le informazioni salvate sulla base dati, e cui nessun altro tier ha accesso </li></ul></ul></ul><ul><ul><ul><li>i servizi applicativi di applicazioni preesistenti (legacy o COTS). </li></ul></ul></ul><ul><ul><li>supporta il Business Tier restituendogli lo stato persistente delle risorse richieste e salvandole, all'atto di un aggiornamento. </li></ul></ul><ul><ul><li>le modalità di accesso alla base dati sono gestite internamente al Resource Tier </li></ul></ul>user business workspace resource Tiers risorse enterprise condivise
  18. 18. Di nuovo tutti insieme user business workspace resource services infrastructure application Tiers Layers processi ed entità di business infrastruttura tecnica e di comunicazione comune utilità comuni applicate tra i vari tier Presentazione e indipendenza dal device sessione utente e filtro dati input risorse enterprise condivise logica di business “applicativa”
  19. 19. I servizi del service layer
  20. 20. L’applicazione
  21. 21. II parte <ul><ul><li>Esempi </li></ul></ul><ul><ul><ul><li>User e workspace tier </li></ul></ul></ul><ul><ul><ul><ul><li>MVC pattern </li></ul></ul></ul></ul><ul><ul><ul><li>Business Tier </li></ul></ul></ul><ul><ul><ul><ul><li>Command pattern </li></ul></ul></ul></ul><ul><ul><ul><li>Resource Tier </li></ul></ul></ul><ul><ul><ul><ul><li>Adapter pattern </li></ul></ul></ul></ul>
  22. 22. User e Workspace Tier
  23. 23. User e Workspace Tier Model-view-controller pattern V M C
  24. 24. User e Workspace Tier V M MVC: Esempio J2EE: Struts
  25. 25. User e Workspace Tier MVC : Esempio .Net (e J2EE): Maverick (http://mavnet.sourceforge.net/)
  26. 26. Business Tier
  27. 27. Business Tier Command Pattern
  28. 28. Business Tier e XML <ul><li>I messaggi di richiesta e risposta a/da Use Case Controller possono essere codificati in XML. </li></ul><ul><li>Lo Use Case Controller può essere un componente generico e profilabile. La profilazione può essere descritta in uno o più file XML. </li></ul><ul><li>L’approccio è valido sia per J2EE che per .Net . </li></ul>
  29. 29. Business Tier Esempio di profilazione XML (UCC) < usecase name=“multiply” > < task > < step type =&quot;com.zzz.debug.TraceBF&quot; xslin=&quot;sample.xi&quot; /> <step type=&quot;com.zzz.sample.MultiplyBF&quot; xslout=&quot;sample.xo&quot;/> </task> <task kind=&quot;transaction&quot;> <step type=&quot;com.zzz.sample.BF00&quot; /> <step type=&quot;com.zzz.sample.BF01&quot; /> <step type=&quot;com.zzz.debug.TraceBF&quot;/> </task> <task kind=&quot;onerror&quot;> <step type=&quot;com.zzz.debug.TraceBF&quot; /> </ task > </ usecase >
  30. 30. Esempio di messaggio XML in ingresso al Business Tier <message> <envelope> <usecase> multiply </usecase> <principal> <identity> momo </identity> <role> ADMIN </role> </principal> <channel> web </channel> </envelope> <payload> <request> <factor> 77 </factor> <factor> 88 </factor> <factor> -1 </factor> </request> </payload> </message>
  31. 31. Business Tier Java vs. C# <ul><li>Con un’architettura di riferimento comune e con l’uso di XML le differenze sono meno delle attese </li></ul><ul><li>Esempio di metodi esposti da un UCC J2EE • String Execute (String message) Esegue una richiesta: riceve la 'pratica' come stringa e ritorna la 'pratica' elaborata come stringa. • Document Execute (Document message) Esegue una richiesta: riceve la 'pratica' come XmlDataDocument e ritorna la 'pratica' elaborata come XmlDataDocument. </li></ul><ul><li>Esempio di metodi esposti da un UCC .Net • string Execute (string message) Esegue una richiesta: riceve la 'pratica' come stringa e ritorna la 'pratica' elaborata come stringa. • XmlDocument Execute (XmlDocument message) Esegue una richiesta: riceve la 'pratica' come XmlDataDocument e ritorna la 'pratica' elaborata come XmlDataDocument. </li></ul>
  32. 32. Business Tier – J2EE vs .NET J2EE .NET Use Case Controller Stateless Session EJB Stateless MTS (COM+) Component Business Function Java class C# Class
  33. 33. Resource Tier
  34. 34. Resource Tier - Adapter Pattern
  35. 35. Resource Tier Tecnologie J2EE e .Net J2EE .Net Data Base JDBC Hybernate ADO .Net External Application JMS Web Services MSMQ Web Services
  36. 36. Conclusioni <ul><li>Un’architettura di riferimento </li></ul><ul><li>Aiuta la comprensione di tecnologie nuove e l’individuazione di similitudini e differenze rispetto a tecnologie note </li></ul><ul><li>Serve come guida nella scelta di tecnologie e prodotti </li></ul><ul><li>Permette di fare scelte di disegno non dettate direttamente dal prodotto e dalla specifica tecnologia e quindi più flessibili e durature </li></ul><ul><li>Estende il valore nel tempo ed il campo di applicabilità degli skill dei singoli progettisti e dell’organizzazione nel suo insieme </li></ul>
  37. 37. D&R <ul><li>Alberto Lagna [email_address] www.whitebox.it </li></ul><ul><li>Mario Zannone [email_address] </li></ul>

×