Framework
Impianti Informatici
Web application - tecnologie
2
Web Application: tecnologie
Java-based (J2EE)
ƒ Sviluppata inizialmente da Sun
ƒ Cross-platform e open source
• Gestire direttamente le funzionalità dell’applicazione
• Benefici della comunità di utenti
Microsoft-based (.Net)
ƒ Componenti proprietarie
ƒ Tecnologia limitata alle piattaforme Microsoft
ƒ Teoricamente accetta molteplici linguaggi di programmazione
Impianti Informatici
3
Linguaggio: J2EE
Codice scritto in Java
Codice Java compilato nel bytecode
ƒ Un intermediario cross-platform
ƒ Mix tra codice sorgente e linguaggio macchina
A run-time, JRE (Java Runtime Environment) interpreta il bytecode
ƒ Esegue l’applicazione
Source
Code
(Java)
ByteCode
Impianti Informatici
JRE
4
Linguaggio: .NET
Codice scritto in uno (o più) dei linguaggi supportati
ƒ VB.NET, C#,…
Il codice viene traslato nel (Microsoft) Intermediate Language (IL)
ƒ Linguaggio cross-platform (simile al bytecode)
A run-time, CLR (Common Language Runtime) interpreta il codice IL
ƒ Esegue l’applicazione
SourceCode
(VB.NET)
SourceCode
(C#)
IL
Impianti Informatici
CLR
5
Tecnologia .Net
Impianti Informatici
6
J2EE (Java 2 Platform Enterprise Edition)
Suite di servizi middleware a
disposizione degli sviluppatori di
applicazioni (server-side)
sità
Neces ve
a ti
inform
Lo
com gica
ple
ssa
Sistemi
eterogenei
n
e co
n
o
i
graz
nti
Inte . esiste
S.I
Velocità di
sviluppo
Sca
l abi
lità
Affidabilità
Sicurezza
Impianti Informatici
7
J2EE
Servizi disponibili
ƒ Servlet/JSP
ƒ EJB
ƒ JDBC
ƒ JMS
ƒ Web Services
ƒ RMI, RMI-IIOP
ƒ JNDI
ƒ JTA
ƒ JAXP
Impianti Informatici
8
Middleware ad oggetti
Comunicazione tra oggetti distribuiti
ƒ Remote Procedure Call (RPC)
ƒ Oggetti remoti
Difficoltà nell’invocazione remota:
ƒ Passaggio di parametri
• Marshalling/Unmarshalling
• Streaming
• Modalità di passaggio
– By value
– By reference
ƒ Instabilità del sistema
• Macchine
• Rete
Impianti Informatici
BLA
BLA
BLA
BLA
9
RMI (RMI-IIOP) e CORBA
Remote Method Invocation
ƒ Middleware nativo per il mondo JAVA
RMI-IIOP (Internet-Inter-ORB-Protocol)
ƒ Compatibilità con CORBA
CORBA (Common Object Request Broker Architecture)
ƒ IDL (Interface Definition Language)
Impianti Informatici
10
Message Oriented Middleware (MOM)
Coordinano elementi della logica applicativa
Messaggio: richiesta asincrona generata da un applicativo
ƒ Informazioni formattate
ƒ Coordinano i sistemi
Messaging Agent
ƒ Creazione, invio, ricezione messaggi
Indirizzamento messaggi
Servizi sui singoli messaggi
ƒ QoS
Client
Impianti Informatici
Agent
Client
11
MOM: Point-To-Point vs Publish-And-Subscribe
Point-To-Point (PTP)
ƒ Funzionamento a code
• Un client invia un messaggio verso una coda specifica
ƒ Simile a mailbox
• Unica coda per tutti i messaggi
Publish-And-Subscribe (Pub/Sub)
ƒ Topic: è un message broker
• I client pubblicano i messaggi
• I client si sottoscrivono ai messaggi
ƒ Simile a newsgroup
Impianti Informatici
12
Java Messages Service (JMS)
Message Oriented Middleware
ƒ Interfacce e semantica associata
Sia PTP che Pub/Sub
Applicazione JMS:
ƒ JMS client
ƒ Non-JMS client
ƒ Messaggi
ƒ JMS provider
ƒ Oggetti amministrati
Limitazioni:
ƒ Security
ƒ Load-balancing/fault tolerance
ƒ Triggering client
ƒ Message type repository
Impianti Informatici
13
Servlet
Applicazioni lato server basate su Java
Richiedono un particolare componente un servlet-container (o servletengine)
ƒ Appartiene ad un application server
ƒ Funzionalità a disposizione dell’applicazione
Ciclo di vita
ƒ Temporanee: vengono instanziate nel momento della richiesta e
distrutte al temine della richiesta
ƒ Permanenti: instanziate all’avvio del server e distrutte solo quando
viene spento
Impianti Informatici
14
Servlet vs CGI
Servlet
CGI
ƒ
JVM sempre attiva
ƒ Un thread per ogni richiesta
ƒ Singola copia del codice
ƒ Servlet in esecuzione
Migliori prestazioni
Platform-indipendent
Librerie Java a disposizione
ƒ Applet
ƒ Database
ƒ Rmi
ƒ …
Impianti Informatici
ƒ
Un processo per ogni richiesta
ƒ Multiple istanze
ƒ Difficile operazioni su
persistenza dati
15
Servlet: funzioni tipiche
Gestire oggetto di sessione
Verifica autorizzazioni
Prelevare i dati inviati dal browser
Interazione con Database
Inviare pagine al browser
codice
della servlet
browser
HttpServeltRequest
doGet(...)
doPost(...)
browser
Servlet
Servlet
HttpServeltResponse
web server
classe generica
per le servlet
classe specifica per
il protocollo http
mia_servlet_
mia_servlet_
generica
generica
HttpServlet
HttpServlet
mia_servlet_http
mia_servlet_http
init()
Servlet
Servlet
Servlet
Servlet
Servlet chain
destroy()
doGet()
doPost()
Impianti Informatici
Servlet
Servlet
16
JSP (Java Server Pages)
Interfaccia utente
Necessitano di un servlet-container
ƒ Compilate in servlet
ƒ Eseguite come codice Java
Stile di programmazione incentrato sul look-and-feel
Servlet-container
JSP
Servlet
Impianti Informatici
JVM
17
JavaBean
“Write once, run anywhere, reuse everywhere “
(JavaSoft)
• Aggiungere funzionalità senza
riscrivere il codice da capo
• Retrocompatibilità con le
versioni precedenti
• Riusabile in applicazioni e
ambienti di sviluppo differenti
• Cross-platform
• Java-based
• Sistemi distribuiti
Impianti Informatici
18
JavaBean
Property
ƒ Comportamento, caratteristiche bean
ƒ Customization
Event
ƒ Comunicazione con altri bean
Persistence
ƒ Serializable (java.io.serializable)
Method
ƒ Tutti i metodi pubblici sono esportati
Introspezione
ƒ Design pattern (reflection)
ƒ BeanInfo interface
Impianti Informatici
19
EJB (Enterprise Java Bean)
Un Enterprise Bean è un componente software server-side.
Può essere composto di uno o più oggetti, a fronte di un’unica interfaccia
con cui il client può interagire.
ƒ Catena di EJB
Necessitano di un apposito container, e quindi di un application server
EJB-compliant
ƒ Ambiente per EJB
ƒ Persistenza, transazioni, sicurezza, connessioni
ƒ Accesso alle risorse esterne (DB,..)
EJB
EJB
EJB
EJB
EJB chain
Impianti Informatici
EJB
EJB
20
EJB: middleware implicito
EJB Container
Impianti Informatici
21
EJB: Session Bean
Modellano un processo, un’azione
ƒ Accedere ad un DB
ƒ Collegarsi ad un legacy system
ƒ Chiamare altri EJB.
Solitamente non persistente
Impianti Informatici
22
EJB: Entity Bean
Modellano i dati
Fungono da contenitore per le informazioni di un database
ƒ Un prodotto
ƒ Un ordine
ƒ Un operaio
ƒ Una carta di credito
Sono usati dai session bean
Gestiscono la persistenza
Impianti Informatici
23
EJB: Message-Driven Bean
Modellano le azioni
Comunicano tramite messaggi JMS
Esecuzione del processo asincrona e separata dalla chiamata.
Client
Agent
Impianti Informatici
Client
24
Message-Driven Bean: caratteristiche
Non hanno interfaccia locale o remota
ƒ Comunicano solo con messaggi
ƒ Qualsiasi clienti che implementi JMS può usarli
OnMessage()
ƒ Analisi a run-time del messaggio
Nessun valore di ritorno
Nessuna eccezione verso il client
ƒ Il container cattura eccezioni di sistema
Stateless
Conservazione dei messaggi per destinatari non pronti
Impianti Informatici
MVC e Web Services
Impianti Informatici
Web application - tecnologie
26
Model 1
Ja v
a-e
e
t
a
l
i
na b
Comp
led
Write-o
n ce
R un an y
where
Impianti Informatici
27
Model 1: problematiche
Accoppiamento
dati-pagine
Accoppi
amento
JAVA-H
TML
Difficoltà di
d eb u g
Flusso logic
o
integrato
Impianti Informatici
i p t vs
r
c
S
a
v
Ja
Java
28
Model-View-Controller (Model 2)
Impianti Informatici
29
MVC: Model
Business Logic
Indipendente da view e controller
Viene realizzato mediante i JavaBean
ƒ contengono la maggior parte della logica dell’applicazione
Incapsula lo stato dell’applicazione
Notifica i cambiamenti alle view
V
C
Notifica cambiamenti
M
Impianti Informatici
30
MVC: View
Visualizza le informazioni all’utente
ƒ Pagina di risposta alla richiesta dell’utente
Corrisponde alle JSP
ƒ Rendering del modello
Richiede i dati aggiornati al model
Invia le azioni dell’utente al controller
Azioni utente
V
C
Richiede dati
Notifica cambiamenti
M
Impianti Informatici
31
MVC: Controller
Gestisce l’input dell’utente
ƒ Intercetta richieste HTTP
Implementato con Servlet
ƒ Comportamento dell’applicazione
ƒ Modifica il model
ƒ Seleziona la view successiva
Seleziona
Azioni utente
C
V
Cambiamenti
Impianti Informatici
Richiede dati
Notifica cambiamenti
M
32
MVC: vantaggi
Facilità sviluppo e gestione applicazioni
ƒ Netta separazione tra business logic, presentation e request
processing
Unico punto di ingresso: il controller
ƒ Le applicazioni sono generalmente più semplici da mantenere e
più facilmente estendibili
ƒ Sicurezza, validazione dell’input, internazionalizzazione
Impianti Informatici
33
Web Services
Servizi offerti via Web
ƒ Applicazioni B2B
Sono una nuova tecnologia di middleware distribuito basata su XML
(Extensible Markup Language)
ƒ
Opportunità di integrazione tra le applicazioni business
Web Services
Business
application
RETE
Impianti Informatici
Business
application
34
Web Services: opportunità
Web Services
Business
application
RETE
Service
description
Business
application
Service
research
Registro A Registro B Registro C
Impianti Informatici
35
Web Services: stack protocollare
Impianti Informatici
36
SOAP (Simple Object Access Protocol)
Lightweight protocol
ƒ Modalità di passaggio di dati in XML
Interfaccia con HTTP
Indipendenti da
ƒ sistema operativo
ƒ protocollo di comunicazione
ƒ linguaggio di programmazione
Impianti Informatici
37
WSDL (Web Services Definition Language)
Interfaccia servizi
Modalità e protocolli di accesso
ƒ Parametri in ingresso
Impianti Informatici
38
UDDI (Universal Description Discovery and Integration)
Sistema di directory distribuito
ƒ Registri pubblici
ƒ Registri privati
Tipi di registri
ƒ White pages
• Informazioni sul provider
ƒ Yellow pages
• Tassonomia standard dei servizi e delle
organizzazioni registrate
ƒ Green pages
• Informazioni tecniche sui servizi
Impianti Informatici
39
Web Services: data flow
WSDL
Client
WSDL compiler
Client Stub
Server
Service Skeleton
SOAP
HTTP
TCP/IP
Impianti Informatici
40
Web Services: pro
i
Operazion
asincrone
Interfaccia con
Business logic
P ro t o c o
lli
standar
d
Applicazioni
disaccoppiate
Modularità
Impianti Informatici
Supporto
al codice
41
Web Services come middleware
Impianti Informatici