evoluzioni del calcolo web direzioni correnti di evoluzione
TRANSCRIPT
Scenari di Web Computing, 1
DIREZIONI CORRENTIdi EVOLUZIONESicuramente il campo applicativo più ampio didimensioni è il sistema Web stesso
Le sfide sono di:• utilizzo al meglio i sistemi Web partendo dalla
computazione locale per una visione coordinata• uso di tutte le risorse disponibili in rete per
migliorare i servizi offerti• creazione di un unico sistema di calcolo globale
ed accessibile
Molte aree applicative di interesse• accesso sicuro a dati via Web• e-commerce & e-market• Web computing
Si arriva a vedere il sistema Web come unainfrastruttura per ottenere servizi(con Qualità e Costo negoziabile)
Scenari di Web Computing, 2
EVOLUZIONI DEL CALCOLO WEB
Browser tradizionali e server web
Sistemi con statoAccesso a risorse del serverattraverso la interazione con il sistema locale alserver
Scenari di Web Computing, 3
PROBLEMI WEBI limiti più sentiti sono:- limiti di operazione e alle opzioni- mancanza di stato nel protocollo- mancanza di sicurezza
Web server e le evoluzioni del protocollo tendonoa fare permanere la connessione per consentire diusare il canale per trasferimenti multipli
Server Web (Apache)canali che vengono mantenuti per una serie ditrasferimenti di informazioni coordinateSi bilancia il costo del canale con una sequenzadi operazioni sullo stesso
i browser tendono a memorizzare localmente unaserie di attributi che forniscono automaticamente aiserver da cui li hanno ottenutiper simulare lo stato della interazione
Un dominio mantiene una storia delle visiteprecedenti
dalla parte del clientedalla parte del server
Scenari di Web Computing, 4
STATOcookiesun cliente può memorizzare (con scadenza)attributi (stato) da usare per successive interazionicookies anche per specificare preferenze utente
spesso uno stesso server ha molti cookies perpagina che vengono ripresentati solo alservitore corretto
formato nome = valoremantenuti sul disco permanente del clientecookies con scadenza e anche cifrati
log attivitàun server può tenere (con scadenza) la storiadelle interazioni da usare successivamente
si possono memorizzare molti eventiPagina richiesta, Host remoto, Tipo delBrowser, Pagina Riferita, Data eTempo
Necessità di applicazioni di esplorazione dei dati
Scenari di Web Computing, 5
WEB COMPUTING
Il primo passo è la possibilità di superare i vincolidel protocollo HTTP e delle interazioni consen-tendo di integrare i diversi componenti e diottenere nuove forme di accesso
Se si vogliono variare le suddivisioni tra le dueparti interagenti
Elaborazione sul client via appletElaborazione sul server via CGI
Applet scaricate da una richiesta dal serverCGI per accesso alle risorse del server
Automatismi nella invocazioneTrasparenza per l'utilizzatore
Scenari di Web Computing, 6
CGI: problemi, limiti e costiAd ogni richiesta, viene attivato un processo chespecifica la CGI (overhead della generazione)Tempo di attesa per eventuali altre richiestecontemporanee (o problemi di mutua esclusione)
Primi passi evolutiviFAST CGI prevedono un processo già attivo perogni servizio CGI specificato
Sono state proposte API per funzioni standardISAPI Microsoft, NISAPI NetscapeSpecifiche dei servizi tipicamente compilate
Scenari di Web Computing, 7
Uso di linguaggi scriptIl linguaggio HTML è interpretato …Allo stesso modo, possiamo pensare a
linguaggi scriptintrinsecamente portabili (interpretati)sia sul client
Visual basicJscript (piccole elaborazioni grafiche locali)
Sia sul serverJavascript, Perl, PHP, …
Spesso le parti di script sono integrate nelle pagineHTML e vengono trattate da un processorecomandi (engine) che produce in uscita HTML
Active Server PagesDefinite dalle Microsoft permescolare HTML e componenti script
engine ASP
HTTP Request: pagina.asp invio a ASP.dll
HTTP Response: HTML codice HTML
non portabili e supportate daMicrosoft IIS Internet Information Server
Scenari di Web Computing, 8
Operazioni Server-side
Java Server Pages JSPParte della pagina HTML contiene specifichein JavaQueste parti (diciamo questi componenti)sono passate alla macchina virtuale integratanel server e producono pagine HTMLdinamiche (usando servlet)
Le JSP sono portabili in quanto non assumonouna specifica architettura di Web server (come leASP), ma solo la presenza di una JVM
In genere, supportate da qualunque Web server
Scenari di Web Computing, 9
Java servletEstensioni di attività in esecuzione sul server eintegrabili facilmente con il server Web (via JVM)
Le servlet sono componenti di codice Javaresidenti sul Web serverse invocate producono attività nella JVMeseguendo come processi leggeri
☺ i costi di attivazione sono molto limitati☺ non usciamo dall'ambiente del server
☺ possiamo gestire facilmente mutua esclusioneo parallelismo
Java Servlet API specification v2.2 (1999)
Scenari di Web Computing, 10
Servlet
Le servlet si basano sul concetto diautomatizzazione del supporto alla attivazione ealla esecuzione
Le servlet vengono gestite e sono inserite in uncontainer o engine
È responsabilità del container il dispatching delleservlet provvedendo il corretto passaggio deiparametri e la raccolta dei risultati
Si consideri una analogia con il middlewareCORBA che fornisce una serie di strutture disupporto per le invocazioni in formato evoluto(POA, repository, ecc.)
Il container è responsabile della:• istanziazione e caricamento di una servlet• esecuzione delle operazioni delle servlet• fase di scaricamento finale
Le servletNon hanno limitazioni alle funzioni che si possonorichiedere
tutta la visibilità di Javaazioni sul file system, accessi a database, ecc.
Estrema portabilitàSupporto su i più comuni Web server
Scenari di Web Computing, 11
Servlet
La operazione fondamentale per una servlet è ilservizio (service) che rappresenta la operazioneattuata dalla servletDue tipi di servlet, generiche e HHTP
Per le servlet che trattano http
Scenari di Web Computing, 12
Ciclo di vita delle ServletLe servlet consentono di prevedere tre operazionifondamentali,correlate alla gestione (prologo ed epilogo)
init(), destroy()e servizio
service()
in tre fasi:1. creazione ed inizializzazione della servlet2. gestione di uno o più servizi richiesti dai client3. distruzione della servlet e deallocazione della
memoria
Scenari di Web Computing, 13
Oggetti per servlet
Una servlet è una istanza di una classe cheestende (eredita da)javax.servlet.GenericServletjavax.servlet.http.HttpServlet
le classi devono implementare la interfacciajavax.servlet.ServletInterface
devono avere i metodi detti soprainit()service()destroy()
Si usano oggetti per gestire:HTTP Richieste (e ottenere parametri)HTTP Risposte (e fornire risultati) ebasate su equivalenti del protocollo HTTPLa service si manifesta con metodi didoGet(); doPost();doPut(); doDelete();con due parametri (in e out)HttpServletRequestHttpServletResponse
HTTP SessioniSessioni come sequenze di richieste HTTPdallo stesso clientele sessioni sono mantenute tra invocazioni diversein altri termini, forniscono stato
Scenari di Web Computing, 14
SERVLET MULTITHREADEDPossibilità di avere più attività concorrenti per unastessa servlet (permesse dal container)
Se mutua esclusioneblocchi synchronized con eccessivo overheadper la riattivazione di tutti i thread per ogni rilascio
In genere, lavorano in concorrenzaPossibilità di accessi contemporanei alle risorse
Se esecuzioni paralleleLa servlet, dopo la inizializzazione, può servirerichieste contemporaneamente
Scenari di Web Computing, 15
SERVLET MULTITHREADED
Si può prevedere di avere un pool di istanze delleservlet che sono state precreate e sono pronte peressere richieste
Una di queste viene attribuita ad ogni possibilerichiesta appena è libera
e in caso non ce ne siano di disponibili?
Scenari di Web Computing, 16
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class esempio extends HttpServlet {
int contatore; /* numero di accessi */
public void init(ServletConfig c)throws ServletException
{ super.init();try { FileReader fr = new
FileReader("valoreiniziale”);BufferedReader br =
new BufferedReader(fr);String appoggio = br.readLine();contatore = Integer.parseInt(appoggio);return;
}catch (FileNotFoundException a)catch (IOException b)catch (NumberFormatException c){ /* per inconsistenza dello stato */ }
contatore = 0;// Valore iniziale di default}public void doGet(HttpServletRequest req,
HttpServletResponse res)throws ServletException, IOException
{ res.setContentType("text/html");PrintWriter out = res.getWriter();contatore++;out.println("La servlet invocata " +
contatore + " volte");}public void destroy() {salvaStato();}protected void salvaStato() {try {FileWriter fw = new
FileWriter("valoreiniziale”);String appoggio = Integer.toString(contatore);fw.write(appoggio, 0, appoggio.length());fw.close();return;}
catch (IOException a) {}}}
Scenari di Web Computing, 17
FUNZIONI DI UTILITÀServletRequest/ HttpServletRequest
getInputStream (), getProtocol (), getRemoteAddress(),getHeader (), getMethod (), getQueryString()getRemoteUser (), getSession (), …
ServletResponse/ HttpServletResponsegetOutputStream (), setContentType (),getWriter(), sendRedirect (), …
ENGINE• stand-alone unico JVM come strumento• plug-in inserito in tempi successivi
come attivazione (DCOM)
• In-process engineplugin apre JVM con invocazione nativa
• Out-of-process engineplugin comunica con socket con JVM
Scenari di Web Computing, 18
Sessioni e servizi con stato
OverheadLe sessioni sono mantenute per un intervallo ditempo definitoDopo un certo intervallo di inattività, una sessioneviene invalidata automaticamente dal container
Session-tracking: tecniche tradizionali
CookieUn cookie contiene un insieme di coppiechiave=valore, generato dal web server e inviato alclient con la risposta e il cliente lo fornisce per ognirichiesta
Hidden Form Fieldsession-tracking anonimo (non riferito ad alcun utentein particolare) utilizzano i campi HIDDEN previsti dallinguaggio HTML
User Authorizationsi limitano gli accessi a risorse a soli quegli utenti inpossesso di username e password
URL Rewritingogni URL utilizzato dall’utente può veniredinamicamente modificato o riscritto per permettergli dicontenere informazioni aggiunte
Scenari di Web Computing, 19
Sessioni con servlet
la tecnologia servlet si integra con queste tecnicheper sfruttare i metodi delle API Servlet
ad esempiogetParameterValues()getPathInfo()getRemoteUser()getCookies())
oltre ad un supporto built-in per il servizio con stato
Servlet Session API:l’interfaccia HttpSession
Esempio:creazione di una sessione per una richiesta req
…/* Ottengo un riferimento all’oggetto HttpSessioncorrente se esiste, o ne creo uno nuovo
nel metodo getSession() un parametro true richiedeuna sessione con il comportamento descritto sopra */
HttpSession sessione = req.getSession(true);…
Scenari di Web Computing, 20
Java Server Pagescome collante per unire• codice HTML• componenti riusabili (Enterprise JavaBeans)• applicazioni remote (servlet)• codice Java• script basati su linguaggio Java
JSP1.Parte della pagina HTML contiene specifiche in
Java tra tag <% %>2.Il codice Java passato alla macchina virtuale
integrata nel server per produrre una servlet3.Si compila on the fly il codice Java e si attiva la
servlet (verifica che non sia cambiata prima dopola compilazione precedente)
4.Si produce la pagina HTML risultato
Scenari di Web Computing, 21
Sviluppo concorrente:Java Beanstecnologia per sviluppare facilmente
componenti Java riusabiliapplet per pagine Webapplicazioni indipendenti
JavaBeans come componenti• sviluppati senza scrivere codice Java• che possono essere innestati e combinati
filosofiaWrite once, run anywhere, reuse everywhere
Si passa da elementi GUI (bottoni, ecc.) fino aapplicazioni di accesso a database
Uso di riflessione e introspezione
Scenari di Web Computing, 22
WEB Computing
Supporto per lavorare tramite Web
Il WEB Server è un veicolo per mettere insiemesistemi e componenti diversi
Web ServerServer
Extension
Servlet Engine JSP Engine
Server
RichiestaRisposta
HTTP
Scenari di Web Computing, 23
Componentiper Adattabilità
Riuso =>variazione di un componentesostituzione di un componente
Linguaggi procedurali• Definizione esatta di tipi e interfacce
Linguaggi a oggetti• Definizione esatta di tipi e interfacce
una infrastruttura a componenti deveconsentire anche accoppiamenti piùlaschi
Componenti in uno scenarioWeb compatibile
Scenari di Web Computing, 24
RIUSO
Scenari di riusoRiutilizzo di componenti legacy
per aziende
Linguaggi e ambienticonsentono soloriuso a “granularità fine”
➥ Librerie corredate da API incompatibilitra loro
➥ Non esistono “oggetti” componibilisenza adattamenti
Serve poter riusare elementi a“granularità grossa”
Infrastruttura per la composizione
Scenari di Web Computing, 25
COMPONENTI
Un componente è un elemento che può essereutilizzato da altri elementi clienti• unità di deployment
Un componente può essere facilmente inseritoin un nuovo scenario di uso adeguandosifacilmente e in modo indolore• unità di riuso
I progettisti di clienti, server e componenti nonhanno bisogno di conoscersi• unità di composizione di terze parti
Il componente è la unità di business processsu cui lavorare in modo indipendente
• autonoma• sviluppata per una infrastruttura il più
possibile standard• riutilizzabile senza cambiamenti ed
adattamenti
La tecnologia a componenti permette didefinire e gestire i requisiti non funzionali
Scenari di Web Computing, 26
STRUTTURA DI COMPONENTIsulla base di due entitàcon ruoli e compiti distinti
Contenitoreche si occupa di aspetti diintegrazione e di infrastruttura come• concorrenza,• sicurezza,• disponibilità,• scalabilità,• gestione,• eterogeneità, …
Oggetti/componenti• logica dell’applicazione• interazione con l’esterno:
➥ presentazione,➥ accesso ai dati
Scenari di Web Computing, 27
EJB E ARCHITETTUREEsistono varietà specializzate di BeansIn particolare, gli Enterprise Java Beans, pensatiper la automatizzazione dei lavori di impresa
Architetture multilivelloCon divisioni funzionali tra diversi livelli
• Cliente (browser)• Web server• Application server (comandato dalle servlet)• Database Server
Clienti
Richieste Web
LOOP
Container
Servlet
Application
Server WEB
Server
DatabaseServer
Sistemicon una migliore suddivisione dei compiti econ una migliore separazione tra i diversi livelli
Scenari di Web Computing, 28
MIDDLEWARE E COMPONENTI:direzioni di evoluzione e stato dell'arte
Fornitura di servizi WEB in ambientedistribuito
Sempre più servizi intesi come sistemi oframework (integrazione e composizione) dioggetti distribuiti
Modello Cliente-Servitore• Attualmente: CORBA, DCOM• RPC (Remote Procedure Call)
Internet
Oggetto A
Oggetto B
Oggetto C
Scenari di Web Computing, 29
DCOM: Distributed Component Object Model
STUB PROXY
ApplicazioneClient
ApplicazioneServer
RPC runtime RPC runtime
TCP/IPTCP/IP
Channel ChannelCOM Library COM Library
CORBA: Common Object Request BrokerArchitecture
SKELETON STUB
ORB ORB
ApplicazioneClient
ApplicazioneServer
IIOP IIOP
TCP/IPTCP/IP
ORB come BUS diinterconnessione
Scenari di Web Computing, 30
SOAP: Simple Object Access Protocol
Soluzione per l'invocazione remota di oggettibasata su tecnologie integrate con il Web
In risposta alla necessità di lavorare conprotocolli Web ma a livello di progetto dicomponenti
IPOTESI di PROGETTO Uso di XML per serializzazione dei dati HTTP come protocollo di trasporto
Documento XML: utilizzo di SOAP EnvelopeSOAP definisce regole per la serializzazione deidati
Envelope: contenitore messaggio
Header (opzionale):contiene opzioni aggiuntive
Body: contiene informazioni per RPC emarshalling parametri
Scenari di Web Computing, 31
Architettura di elaborazione
ApplicazioneClient
ApplicazioneServer
Documento XML Documento XML
HTTPHTTP
<SOAP-ENV:Envelopexmlns:SOAP-ENV=”http://schemas.xmlsoap.
org/soap/envelope/”SOAP-ENV:encodingStyle=”http://schemas.
xmlsoap. org/soap/encoding/”><SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m=”Some-URI”>
<symbol>DIS</symbol></m: GetLastTradePrice>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
Scenari di Web Computing, 32
Un contesto specifico:Firewall e SOAP
spesso i firewall bloccano qualunque servizio
RPC senza l’uso di SOAP
RPC con l’uso di SOAP
Scenari di Web Computing, 33
Soluzioni Middleware perl'integrazione di Servizi Web
Microsoft .NET
• Componente .NET ospitato in un container(transazioni, sicurezza, messaging service)
• Business layer:Integrazione database: ADO.NETMS Host Integration Server
• Integrazione con altri business partnerattraverso tecnologie Web (SOAP, UDDI,WSDL, BizTalk)
Java 2 Platform Enterprise Edition
• Componente J2EE ospitato in un container(transazioni, sicurezza, messaging service)
• Business layer utilizza Enterprise Java Beans:Integrazione database: JDBC, SQL/JJava Connector Architecture
• Integrazione con altri business partnerattraverso tecnologie Web (SOAP, UDDI,WSDL, ebXML)
Scenari di Web Computing, 34
Microsoft .NET: Architettura
Scenari di Web Computing, 35
Java 2 Platform EnterpriseEdition:
Architettura
Scenari di Web Computing, 36
Java 2 PlatformEnterprise Edition:
Composizione in Moduli
Scenari di Web Computing, 37
Java 2 Platform Enterprise Edition:Multi-tier Architecture
PRESENZA DI LIVELLI MULTIPLIOgni livello consente di affrontare ilproblema in isolamento
Progetto separato ed indipendente
Ogni livello deve essere facilmenteintegrabile con l'esistente
Scenari di Web Computing, 38
ESEMPIO:ARCHITETTURA JAVA-BASED
ARCHITETTURA JAVA-BASED EACCESSO A DB
Scenari di Web Computing, 39
Architettura Java BasedContainer unificato per Servlet e Beans
Concentriamo l'attenzione sul modelloSUN di componente Enterprise:
Enterprise Java Bean (EJB)
Scenari di Web Computing, 40
Enterprise Java Bean (EJB)
Consenteall’applicazione digirare sull’hardwaresottostante
Consenteall’applicazione digirare sull’hardwaresottostante
Gestisce i servizi disistema ed ospita icomponentidell’applicazione
Gestisce i servizi disistema ed ospita icomponentidell’applicazione
CreazioneLocalizzazione
Distruzione
Metodidi
Business
Scenari di Web Computing, 41
EJB Container
Ancora una volta l'idea di ContainerSvolge il ruolo di gestore a runtime dellepolitiche di:
• Sicurezza • Transazioni• Persistenza • Concorrenza
Scenari di Web Computing, 42
Creazione di EJB
• EJBHome lookup• Istanza EJBObject• Istanza Bean class• Stub inviato al client• Invocazione metodi
Scenari di Web Computing, 43
Tassonomia di EJB
Vengono definiti vari prototipi di EJB,adatti a supportare i concetti di:
• SessioneStateless: ogni invocazione è indipendenteStateful: stato mantenuto fra invocazionisuccessive
- Componenti incaricati dell’esecuzione diun servizio incapsulano la business logic
- Oggetti non persistenti
• PersistenzaContainer-Managed Persistence (CMP)sincronizzazione a carico del container
Bean-Managed Persistence (BMP)gestione proprietaria della sincronizzazione
- Componenti normalmente incaricatidell’accesso a dati e dellasincronizzazione- Oggetti persistenti
Scenari di Web Computing, 44
EntityBean
SessionBean
Scenari di Web Computing, 45
J2EE e MS .NET a confronto
Argomenti comuni a entrambe lepiattaforme:
• alta integrazione con servizi web;• bassi costi di sistema
(jBoss/Linux/Cobalt, Windows/Win32)• soluzioni single-vendor• alta scalabilità• necessità di training dei programmatori
Scenari di Web Computing, 46
J2EE e MS .NET a confronto
A favore di .NET e contro J2EE:
• Microsoft marketing alle spalle
• Buona storia passata riguardo servizi Web,ambienti di sviluppo, supporto aziendale, ...
• Modello di programmazione più semplice(c'è modello?)
• Neutralità rispetto al linguaggio
• Interconnessione e dipendenza forte con ilsistema operativo sottostante
Scenari di Web Computing, 47
A favore di J2EE e contro .NET:
• È spinta da un intero consorzio diindustrie
• Tecnologia stabile e assestata, non first-generation come .NET
• .NET non è completamente interoperabilecon standard industriali correnti (bizTalk ha
estensioni proprietarie di SOAP)
• Modello di programmazione più ricco
• Neutralità rispetto alla piattaforma
Scenari di Web Computing, 48
A favore di J2EE e contro .NET(continua):
• Più facile migrazione di codice Javaesistente verso l'integrazione con lapiattaforma J2EE per servizi Web
• Migliore storia di portabilità e integrazionecon componenti esistenti (Java Connector
Architecture)
• Utilizzo principe del linguaggio Java èprobabilmente più indicato oggi che nonquello di C#
(dati Gartner: 2.5 milioni di sviluppatori Java oggi, 4milioni entro 2003; 78% università insegnano Java,50% lo ritengono una parte imprescindibile delcurriculum)