Framework di Middleware. per Architetture Enterprise



Documenti analoghi
Implementazione di MVC. Gabriele Pellegrinetti

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013

CORSO DI PROGRAMMAZIONE JAVA

PROGETTAZIONE E SVILUPPO DI UN. Relatore: Studente: Paolo Merialdo Valerio Barbagallo

Architetture Web: un ripasso

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Laboratorio di Basi di Dati

SWIM v2 Design Document

J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.

Programmazione server-side: Java Servlet

Protocolli e architetture per WIS

L architettura MVC (Model- View-Controller) Introduzione

Componenti Web: client-side e server-side

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Use Case Driven Object Modeling: ICONIX

Programmazione Java Avanzata

Server-side Programming: Java servlets Parte II

sito web sito Internet

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Programmazione Java Avanzata Spring - JDBC

Introduzione al linguaggio Java: Servlet e JSP

Programmare in ambiente Java Enterprise: l offerta formativa di Infodue

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

Architetture Software

Database e reti. Piero Gallo Pasquale Sirsi

WorkFLow (Gestione del flusso pratiche)

Panoramica: che cosa è necessario

Introduzione al mondo della persistenza. Dott. Doria Mauro

MetaMAG METAMAG 1 IL PRODOTTO

Come funziona internet

Strutture di accesso ai dati

Corso Android Corso Online Sviluppo su Cellulari con Android

Applicazione: GAS - Gestione AcceSsi

Progetto di Applicazioni Software

Hackathon Developers User Guide

Il Pattern MVC nei Framework di sviluppo per applicazioni Web. Analisi e comparazione di SPRING MVC Framework e ASP.NET MVC Framework.

Sistemi informativi secondo prospettive combinate

Dispensa di Informatica I.1

Programmazione Java Avanzata

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Concetti base. Impianti Informatici. Web application

L o. Walter Ambu japs: una soluzione agile (

Indice. Indice Premessa e scopo del documento Ambiente operativo Architettura di sistema... 5

Titolo Alfresco. Titolo1 Non solo un documentale

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

APPENDICE A Servlet e Java Server Page

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

DBMS e Linguaggi di programmazione nell'era di Internet

IL SOFTWARE SECONDO LA NORMA UNI EN ISO :2008 (IIA PARTE) 1

UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTA DI INGEGNERIA DIPARTIMENTO DI SISTEMI E INFORMATICA. Elaborato di Tecnologie del Software per Internet

Lezione 1 Introduzione

Base di dati e sistemi informativi

Architetture e applicazioni web

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Tecnologie di Sviluppo per il Web

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Progetto di Applicazioni Software

Corso Programmazione Java Android. Programma

Programmazione Client-Server

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Introduzione alla programmazione Http lato server in Java

Corso di Informatica Modulo T3 B2 - Database in rete

REALIZZAZIONE DI UN LABORATORIO REMOTO PER ESPERIENZE DI ROBOTICA EDUCATIVA: LATO CLIENT

Lezione 9. Applicazioni tradizionali

Configuratore di Prodotto Diapason

Architetture Informatiche. Dal Mainframe al Personal Computer

UML Component and Deployment diagram

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Flavio De Paoli

Le scelte tecnologiche di RUP System

MODEL-VIEW-CONTROLLER PROBLEMA

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Corso Online. We Train Italy

Active Directory. Installatore LAN. Progetto per le classi V del corso di Informatica

Introduzione alle applicazioni di rete

Introduzione al Model-View-Controller (MVC)

C++ E QT, BINOMIO PERFETTO

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Architetture Informatiche. Dal Mainframe al Personal Computer

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

appunti delle lezioni Architetture client/server: applicazioni client

Architettura e tecnologie per lo sviluppo del Setup-Dashboard. Setup Srl Information Technologies

Approccio stratificato

Registratori di Cassa

XML e PHP. Gestire XML con PHP. Appendice

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Analisi e sviluppo di un componente per un ESB open source

Progettazione: Tecnologie e ambienti di sviluppo

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Transcript:

Framework di Middleware per Architetture Enterprise Corso di Ingegneria del Software A.A.2011-2012

Un po di storia 1998: Sun Microsystem comprende l importanza del World Wide Web come possibile interfaccia di applicazioni distribuite L idea era quella di realizzare applicazioni che girassero server-side accessibili tramite un client diffuso che richiedesse requisiti locali moderati (web-browser) 2

Java EE (Java Platform Enterprise Edition) Piattaforma per sviluppo di applicazioni Java lato server. Aggiunge a Java SE librerie orientate a soddisfare requisiti per la realizzazione di artefatti software: Fault tolerant Distributed Multi-tier Le componenti software che implementano tali caratteristiche, unitamente all artefatto che si intende sviluppare, girano su un Application Server che ne fornisce un implementazione coerente con le specifiche Java EE 3

API Java EE I package della versione 5: javax.faces.* javax.faces.component.* javax.servlet.* java.enterprise.inject.* javax.enterprise.context.* javax.ejb.* javax.validation javax.persistence javax.transaction javax.jms.* javax.resources.* javax.sql.* 4

API Java EE I package della versione 5: javax.faces.* javax.faces.component.* javax.servlet.* java.enterprise.inject.* javax.enterprise.context.* javax.ejb.* javax.validation javax.persistence javax.transaction javax.jms.* javax.resources.* javax.sql.* 5

Architetture a n-tier Nelle architetture JavaEE ogni applicazione è partizionata in livelli o tiers o layers Presentation layer (come l'applicazione si presenta) Business logic layer (come l'applicazione lavora implementando una logica che astrae un problema del mondo reale) Data access layer (i dati su cui l'applicazione lavora) Non vi ricorda un design pattern????? 6

Due pattern a confronto 3-tier pattern MVC Pattern 7

Servlet: definizione È una classe Java la cui peculiarità è quella di risiedere lato server. Ha lo scopo di estendere le funzionalità offerta da un server sul quale gira un'applicazione il cui accesso si basa su un modello di programmazione requestresponse Nel caso più comune una servlet estende applicazioni ospitate su un server web Una sorta di applet server side 8

Java Servlet API Definiscono un protocollo in grado di rispondere a una request Questo protocollo non è legato necessariamente al protocollo client-server HTTP anche se HTTP rappresenta la scelta più frequente nelle servlet destinate al mondo web Ma dove risiede fisicamente una servlet? Chi è in grado di farla girare? 9

...un servlet-container! 10

Servlet: statechart 11

Servlet: ciclo di vita Fase di inizializzazione (One-time-call): viene eseguito il metodo init(). Il servlet-container rende disponibile un istanza di ServletConfig che contiene eventuali parametri di inizializzazione globali dichiarati nel descrittore web.xml. Fase di servizio (Business logic): la servlet è in grado di rispondere alle richieste del client. Viene invocato il metodo service() che effettuerà il dispatch della richiesta in base alla tipologia della stessa (es: si tratta di una richiesta GET da HTTP: service invocherà il metodo doget()) Fase di destroy (One-time-call): viene invocato il metodo destroy() dove è possibile prendersi cura di aspetti di chiusura: deallocazione risorse, chiusura connessioni verso l engine che implementa il modello dei dati ecc. 12

HttpServlet: Sequence Diagram loop 13

Http Servlet: flusso request-response 14

Servlet: gerarchia API 15

Riassumendo (server-side): Nel caso specifico di Servlet che gestiscono il flusso client servlet di transazioni con il protoccolo HTTP, la logica di business che implemento nella servlet deve: inputneeded = analizzacontenuto(request); if(inputneeded) (input=getinput()); output = produce(input); write(output); 16

Riassumendo (client-side): Il client ovvero il browser web deve: input = get(response); dom = parse(input); render(dom); if (dom.script) execute (dom.script); show(dom); //mostra a video la pagina... resta in attesa di interazioni da parte dell'utente per generare una nuova richiesta 17

Java Server Pages: JSP Le servlet vincolano la scrittura dell output HTML all interno del codice Java, direttamente sulla response, prima che venga affidata al protocollo. Le JSP permettono l approccio opposto: sono pagine HTML in cui posso scrivere codice java tramite scriptlet o attraverso speciali tag. In un file.jsp tutto ciò che non è un tag speciale o una scriptlet verrà copiato senza alterazioni nella response. E il resto da chi viene interpretato? 18

JSP: traduzione if (!page.hasclassfile()) or (page.ismodified()){ javasource = container.translate(page); classfile = jdk.compile(javasource); } jre.execute(classfile); 19

JSP: traduzione La prima volta che una pagina JSP viene invocata o non appena viene modificata a seguito di tale invocazione, subisce un processo di traduzione in una servlet. Il servlet container attiva un traduttore interno che produce un sorgente java che implementa una servlet Viene invocato il compilatore java che compila il sorgente e genera un file.class Il file class è passato alla VM per l esecuzione della servlet generata Una seconda invocazione della pagina salta la fase di traduzione e di compilazione e prevede la sola esecuzione da parte della VM. E necessario però che la pagina non abbia subito alcuna modifica (scenario tipico in fase di produzione ma non in fase di sviluppo) 20

JSP e Pattern MVC 2 Lo scenario in cui l'output html è prodotto dal codice della servlet scrivendo sulla response viene identificato come pattern model 1 (viewlogic e business-logic miscelate assieme). Nel pattern Model 2, il client effettua una richiesta al controller. Quest'ultimo, attraverso la logica che lo implementa, produce un visualobject, comunemente un POJO che viene posto in request e che viene così reso disponibile alla view (una jsp nel nostro caso) scelta dal dispatcher 21

MVC 2 diagram 22

Modello dei dati Nel data tier vengono memorizzati i dati su cui opera la logica di business Lo scenario tipico di una servlet web prevede che il modello dei dati venga realizzato utilizzando il motore di un database relazionale Java SE e Java EE mettono a disposizione un set di API per colloquiare con un database Il compito di ciascun produttore è quello di creare un connettore conforme allo standard JDBC Java DataBase Connectivity Tale connettore separa le API di comunicazione dall'implementazione specifica del produttore dell'engine del DB 23

Pattern DAO 24

Pattern DAO: DTO Un Data Transfer Object è solitamente un POJO, un Java Bean le cui proprietà rappresentano un mapping con una tabella di DB Esistono diverse strategie di mapping tra POJO e tabelle-relazioni di un db Nel nostro esempio ci limitiamo ad una strategia di mapping 1:1 Vediamo ora una sequenza di chiamate dalla business logic al modello 25

DAO: Sequence Diagram 26

Due middleware migliorativi Per piccole applicazioni le servlet sono un buono strumento di sviluppo Se il modello dei dati è composto da poche tabelle JDBC può rappresentare un buon approccio Scenari reali però richiedono strumenti maggiormente potenti e flessibili 27

Apache Struts Framework che estende le servlet basato solamente su MVC 2 Aggiunge strumenti per la manipolazione della view quali: Tag-libraries per la view Controlli sintattici per le form web Business logic implementabile in una gerarchia di classi chiamate Action Action sono implementabili sia lato Java che lato configurazione (xml) o miste 28

Hibernate E' un middleware che fornisce un servizio di ORM (Object-Relational Mapping) Un database relazione è gestito tramite una gerarchia di oggetti Java e relativi DAO secondo diverse strategie di mapping Stabilito il mapping e creata la gerarchia di oggetti Java, non scrivo più query verso il db Il mio codice lavora sulla gerarchia di oggetti che rappresenta il db (layer persistente sincronizzato rispetto ai dati presenti sul db) 29

Riferimenti Beginning Java EE 5 Apress di K. Mukhar e C. Zelenak Core J2EE Patterns : http://java.sun.com/blueprints/corej2eepatterns/patterns/ DataAccessObject.html Struts: http://struts.apache.org/ Hibernate: http://www.hibernate.org/