La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

S VILUPPO E COLLAUDO DI UNA WEBAPP MEDIANTE I O C E AOP Alessandro Franchi - 0000219521 Reti di Calcolatori L-S A.A. 2007/2008.

Presentazioni simili


Presentazione sul tema: "S VILUPPO E COLLAUDO DI UNA WEBAPP MEDIANTE I O C E AOP Alessandro Franchi - 0000219521 Reti di Calcolatori L-S A.A. 2007/2008."— Transcript della presentazione:

1 S VILUPPO E COLLAUDO DI UNA WEBAPP MEDIANTE I O C E AOP Alessandro Franchi Reti di Calcolatori L-S A.A. 2007/2008

2 I NTRODUZIONE JavaBeans Troppo semplici per applicazioni di livello enterprise J2EE Disaccoppiamento tra Presentation Layer (JSP e servlet) e Business Logic (EnterpriseJavaBeans) Servizi middleware EJB troppo complessi Implementazione complessa Molto invasivo Difficili da testare Nuovi pattern di programmazione 2

3 BookServiceImpl ShoppingCartService BookService > BookService > ShoppingCart BookService ShoppingCart BookService ShoppingCart new ShoppingCart() new BookServiceImpl() BookServiceMock new BookServiceMock() Librerie vs. Framework IoC Dependency Injection Loose coupling Testabilità Manutenibilità ShoppingCartService BookService > BookService > ShoppingCart BookService ShoppingCart BookService ShoppingCart BookServiceImpl injected BookServiceMock injected JNDI lookup ShoppingCartService ShoppingCart BookServiceImpl ShoppingCart BookServiceImpl ShoppingCart BookServiceImpl new ShoppingCart() I NVERSION OF C ONTROL (I O C) 3

4 A SPECT O RIENTED P ROGRAMMING (AOP) Servizi ortogonali alla business logic: SICUREZZASICUREZZA BookService Shopping CartService Shopping CartService UserService TRANSAZIONI BookService ShoppingCartService UserService TRANSAZIONITRANSAZIONI TRANSAZIONITRANSAZIONI SICUREZZASICUREZZA SICUREZZASICUREZZA 4 LOGGINGLOGGING Cross-cutting concerns come aspect: flusso di esecuzione Advice Joinpoint Pointcut

5 S PRING F RAMEWORK Architettura: Spring Web Flow Flusso stati, eventi e transizioni Core IoC Container ( ApplicationContext ) Core IoC Container ( ApplicationContext ) ORM Hibernate … ORM Hibernate … JEE Remoting JMS EJB … JEE Remoting JMS EJB … DAO JDBC Transazioni DAO JDBC Transazioni AOP Web MVC Integrazione con altri framework Web MVC Integrazione con altri framework 5

6 Applicazione web per la gestione di uno shop online Three-tiered architecture: A RCHITETTURA DELLA W EBAPP 6 Security Layer Database Presentation Layer Application Layer Persistence Layer Web Browser … …

7 P RESENTATION L AYER (C LIENT -S IDE L OGIC ) 7 Dispatcher Servlet (Front Controller) Dispatcher Servlet (Front Controller) ModelAndView Handler Mapping Views: hello.jsp login.jsp buy.jsp … … … … … … View Resolver Page Controllers: HomeController LoginController FlowController Request: login.htm Request: login.htm Service Layer Service Layer FlowExecutor FlowRegistry

8 buyFlow (main flow) buyFlow (main flow) F LOW DI A CQUISTO CON CARRELLO DELLA SPESA VIRTUALE 8 search (subflow) search (subflow) addToCart (subflow) addToCart (subflow) removeFromCart (subflow) removeFromCart (subflow) update database update database checkout start buy warn not in stock warn not in stock thank you thank you end

9 ShoppingCartService ShoppingCart Shopping Cart Shopping Cart injected A PPLICATION L AYER (B USINESS L OGIC ) Gestione domain objects Ambiente multiutente Un carrello della spesa virtuale per utente 9 scoped-proxy HTTP Session ---- Shopping Cart HTTP Session ---- Shopping Cart injected

10 P ERSISTENCE L AYER (D ATABASE L OGIC ) Object-Relational Mapping Hibernate Data Access Object (DAO) Gestione transazioni come aspect Spring AOP: proxy-based method joinpoint 10 proxy BookService txAdvice BookDao saveBooks() updateBooks() getBooks() saveBooks() updateBooks() getBooks() Inizia transazione Termina transazione (commit o rollback) Termina transazione (commit o rollback) Risultati Esegue business logic

11 T ESTING Supporto di Spring alla fase di testing Unit Testing di controller Spring MVC Verifica che il model contenga certi oggetti Verifica che la view ritornata sia quella giusta Testing di flow definiti con Spring Web Flow Verifica della correttezza degli stati e delle transizioni Integration Testing dellapplicazione Verifica del funzionamento dellapplicazione o di parti di essa caricando l ApplicationContext Transactional Testing dei componenti per laccesso al database Verifica delle operazioni di accesso e modifica del database Ogni test è wrappato in una transazione EasyMock Per implementazioni mock dei service objects nel caso di Unit Test 11

12 D EPLOY DISTRIBUITO 12 Controller MVC Controller MVC ProxyFactoryBean (crea proxy specifici per RMI, HTTP Invoker…) ProxyFactoryBean (crea proxy specifici per RMI, HTTP Invoker…) invocazione metodo network JRMP, HTTP JRMP, HTTP BookService BookDao Database PROXyPROXy PROXyPROXy Book Service (interfaccia del servizio remoto) Book Service (interfaccia del servizio remoto) crea proxy Application Layer Persistence Layer Presentation Layer Web Browser … …

13 C ONCLUSIONI Spring Framework: Componenti loosely coupled, riutilizzabili e facilmente testabili Servizi ortogonali (transazioni) applicati come aspect Architettura scalabile Futuri sviluppi dellapplicazione Data source estratta da directory JNDI che ottiene connessioni da un pool di connessioni Load balancing 1. Gestore a livello applicativo 2. Load balancer a livello HTTP 3. Java Message System 13

14 B IBLIOGRAFIA C. Walls and R. Breidenbach, Spring in Action, Manning, Java Beans (http://java.sun.com/javase/technologies/desktop/javabeans/index.jsp)http://java.sun.com/javase/technologies/desktop/javabeans/index.jsp Sun Microsystems (http://www.sun.com/)http://www.sun.com/ Java (http://java.sun.com/)http://java.sun.com/ Java 2 Platform, Enterprise Edition (J2EE) (http://java.sun.com/j2ee/overview.html)http://java.sun.com/j2ee/overview.html Enterprise JavaBeans Technology (http://java.sun.com/products/ejb/)http://java.sun.com/products/ejb/ M. Fowler, Inversion of Control, 2005 (http://martinfowler.com/bliki/InversionOfControl.html)http://martinfowler.com/bliki/InversionOfControl.html SpringSource.org - Spring Framework (http://www.springsource.org/)http://www.springsource.org/ M. Fowler, Inversion of Control Containers and the Dependency Injection pattern, 2004 (http://martinfowler.com/articles/injection.html)http://martinfowler.com/articles/injection.html SpringSource.org - Spring Web Flow (http://www.springsource.org/webflow)http://www.springsource.org/webflow Acegi Security - Acegi Security System for Spring (http://www.acegisecurity.org/)http://www.acegisecurity.org/ Hibernate (http://www.hibernate.org/)http://www.hibernate.org/ Remote Method Invocation Home (http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp)http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp Hessian Binary Web Service Protocol (http://hessian.caucho.com/)http://hessian.caucho.com/ Burlap XML Web Service Protocol (http://www.caucho.com/resin-3.0/protocols/burlap.xtp)http://www.caucho.com/resin-3.0/protocols/burlap.xtp 14

15 F INE 15


Scaricare ppt "S VILUPPO E COLLAUDO DI UNA WEBAPP MEDIANTE I O C E AOP Alessandro Franchi - 0000219521 Reti di Calcolatori L-S A.A. 2007/2008."

Presentazioni simili


Annunci Google