1.24k likes | 1.32k Views
Web – services. Andrea Manconi IASC group DIEE – D epartement of E letrical and E letronic E ngineering manconi@diee.unica.it. Sommario. Web services Web application (CGI, FastCGI, ASP, JSP,PHP) Servlet vs CGI, FastCGI, ASP, JSP,PHP Servlet – persistenza Servlet – caching
E N D
Web – services Andrea Manconi IASC group DIEE – Departement of Eletrical and Eletronic Engineering manconi@diee.unica.it
Sommario • Web services • Web application (CGI, FastCGI, ASP, JSP,PHP) • Servlet vs CGI, FastCGI, ASP, JSP,PHP • Servlet – persistenza • Servlet – caching • Servlet – contenuto HTML • Servlet – sessioni • Servlet – sicurezza • Distribuzione di carico Andrea Manconi
Web service Per web service si intende un servizio offerto attraverso il web. Esempio: richiesta informazioni prodotto catalogo. Si invia una richiesta ad un dato URL e il servizio risponde fornendo le informazioni richieste. Andrea Manconi
Web service • Web page: statica. Non esiste iterazione • Web application: dinamica. Iterazione con l’utente Andrea Manconi
Web application • CGI • FastCGI • ASP • JSP • PHP • Java Servlet Andrea Manconi
Web application - CGI Common Gateway Interface • Una delle prime tecnologie utilizzate • Nata per definire un metodo standard per la comunicazione tra un server di informazioni e applicazioni esterne • Ciclo di vita: pessimo, un nuovo processo per ogni richiesta (tempo e risorse del server) Andrea Manconi
Web application - CGI • Vantaggi • Semplice da scrivere • Portabilità • Supporta molti linguaggi: es. C, Perl Andrea Manconi
Web application - CGI • Svantaggi • Prestazioni limitate • Impossibilità di interazione con il server web a causa dei processi separati (es. non è possibile scrivere sul file log del server) Andrea Manconi
Web application - CGI HelloWorld.cgi (Perl) #!/usr/bin/perl $t = "Hello World!"; print <<EOT; Content-type: text/html <Title> $t </Title> <H1> $t </H1> EOT Andrea Manconi
Web application - FastCGI FastCGI • Sviluppata da Open Market • Elimina la necessità di creare un nuovo processo per ogni richiesta pervenuta • Tuttavia è necessario attivare almeno un processo per ogni programma FastCGI Andrea Manconi
Web application - FastCGI • Vantaggi • Semplice • Facile migrare da applicazioni CGI ad applicazioni FastCGI • Alte performance (rispetto a CGI) • Molti linguaggi supportati Andrea Manconi
Web application - FastCGI • Svantaggi • è necessario attivare almeno un processo per ogni programma FastCGI, se un programma FastCGI deve gestire richieste concorrenti saranno attivati più processi • continua a mancare l’interazione con il server Andrea Manconi
Web application - ASP Active Server Pages • Sviluppato da Microsoft • Pagina HTML con codice incorporato (in genere VBScript e JScript) • Problema: in piattaforma non Windows potrebbero sorgere problemi legati all’assenza della libreria COM di Windows Andrea Manconi
Web application - ASP • Vantaggi • Facile da usare • Ottimizzato per piccoli contenuti dinamici Andrea Manconi
Web application - ASP • Svantaggi • Portabilità: • 1) il supporto ASP è contenuto in Microsoft Internet Information Server 3.0, disponibile gratuitamente, mentre il supporto per altri server web è disponibile come prodotto commerciale • 2) su piattaforme non Windows problemi legati all’assenza della libreria COM Andrea Manconi
Web application - ASP HelloWorld.asp <HTML><BODY><% For i = 3 To 7 %> <FONT SIZE="<% = i %>">Hello World! <BR> <% Next %></BODY> </HTML> Andrea Manconi
Web application - ASP Hello World!Hello World!Hello World!Hello World!Hello World! Andrea Manconi
Web application - JSP Java Server Pages • Alternativa ad ASP basata su Java • Sviluppata da SUN • Forte legame con le servlet Andrea Manconi
Web application - JSP • Vantaggi • Standard: implementato da moltissimi produttori su tutte le piattaforme • Semplice passare da ASP a JSP per chi conosce JAVA Andrea Manconi
Web application - JSP • Svantaggi • Un solo linguaggio di script: JAVA • Ottimizzato per piccoli contenuti dinamici Andrea Manconi
Web application - JSP HelloWorld.jsp <HTML> <BODY> Hello World! The time is now <%=new java.util.Date() %> </BODY> </HTML> Andrea Manconi
Web application - PHP • È un linguaggio di scripting open-source per la creazione di contenuti dinamici • Il codice PHP viene scritto come codice embedded all’interno delle pagine HTML Andrea Manconi
Web application - PHP HelloWorld.php /* void echo ( string arg1 [, string argn...]) */ _________________________________________ <html> <head> <title>Test PHP</title> </head> <body> <?php echo "Hello World!<p>"; ?> </body> </html> Andrea Manconi
Web application - PHP • Interfaccia verso i più comuni database (oracle, MySQL …) • Sintassi simile a quella del C e di Perl • Cross-platform compatibility: significa che gli script PHP sono supportati da tutti gli Internet servers Andrea Manconi
Web application - PHP • Vantaggi: • Open – source !!! • Non è proprietario, e quindi non è ristretto a determinate piattaforme • Facile da utilizzare Andrea Manconi
Web application - PHP • Svantaggi • Forte consumo di memoria da parte dell’interprete (variabili non necessariamente dichiarate) Andrea Manconi
Web application - Servlet Servlet • E’ pensabile come ad una estensione che è possibile collegare ad un server al fine di migliorarne ed estenderne le funzionalità. • L’esecuzione avviene all’interno di una JVM e pertanto è sicura e portabile Andrea Manconi
Web application - Servlet • Tutte le servlet vengono gestite da thread separati all’interno dello stesso processo • Portabilità: sia rispetto ai sistemi operativi, sia verso i server web Andrea Manconi
Web application - Servlet • Le servlet operano all’interno del dominio del server, pertanto a differenza delle applet non richiedono che il browser supporti JAVA Andrea Manconi
Servlet vs CGI • Servlet sono una soluzione Sun alle CGI • Entrambi generano contenuti dinamici • Le Servlet sono sicure • Le Servlet sono indipendenti dalla piattaforma • Le Servlet hanno un migliore supporto per i componenti riusabili Andrea Manconi
Servlet vs CGI • Servlet: vantaggi • associate a thread del web server, non a processi separati • Servlet: svantaggi • Possono essere scritte esclusivamente in Java Andrea Manconi
Servlet vs CGI • L’esecuzione di una CGI è indipendente dalle altre. La comunicazione tra diverse istanze è complessa • Una servlet è sempre in esecuzione e la comunicazione tra i vari thread è semplificata • Un processo per ogni richiesta. Ad n richieste n copie dell’applicazione in memoria Andrea Manconi
Servlet vs CGI Andrea Manconi
Servlet vs FastCGI • Servlet: gestione semplificata delle sessioni • FastCGI: possibilità di scelta tra più linguaggi • Servlet: PORTABILITA’ Andrea Manconi
Servlet vs ASP • Le Servlet sono portabili verso • altri sistemi operativi • web server • Le Servlet sono più potenti per applicazioni complesse • Migliore supporto per componenti riusabili Andrea Manconi
Servlet vs JSP Esiste una forte relazione tra le servlet e JSP • Servlet: codice JAVA che legge e scrive HTML • JSP: HTML con codice JAVA embedded Andrea Manconi
Servlet vs PHP • Java è ottimo per progetti complessi • Librerie • PHP utilizza i cookie ma non ha una gestione delle sessioni Andrea Manconi
Web server • WebSphere (IBM) • http://www-3.ibm.com/software/info1/websphere/index.jsp • WebLogic (BEA) • http://www.bea.com • 9i Application Server (Oracle) • http://www.oracle.com/ip/deploy/ias/ • Jrun (Allaire) • www.allaire.com/products/jrun • Sun Java Web Server • www.sun.com/software/jwebserver/try • Tomcat (Apache) • http://jakarta.apache.org Andrea Manconi
J2EE • J2EE raccoglie diverse API lato server • Servlet API • JSP • EJB • JavaMail • JMS (Java Messaging Service) • JTA (Java Transactions) • Corba • JDBC • JAXP (Java API for XML Parsing) • JNDI (Java Naming and Directory Interface) Andrea Manconi
Persistenza • Nel momento in cui il codice di una servlet viene caricato, il server crea una singola istanza, per gestire tutte le richieste. Andrea Manconi
Persistenza • Vantaggi: • Ridotto consumo di memoria • Riduzione del carico di lavoro, altrimenti necessario per creare un nuovo oggetto ad ogni richiesta • Permette la persistenza Andrea Manconi
Persistenza • Cosa si intende per persistenza ? Le web application fanno in genere riferimento ad un db. Si immagini cosa significa stabilire una connessione al db per ogni richiesta che viene effettuata. È evidente il vantaggio della persistenza della connessione con una singolo istanza della servlet che gestisce la connessione. Andrea Manconi
Persistenza import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println(“Numero di accessi: " + count); } } Andrea Manconi
Persistenza • Problema: se si utilizzano variabili locali non esistono problemi di interazione tra i thread, ma se si utilizzano variabili non locali … Andrea Manconi
Persistenza • Si consideri contatore mostrato in precedenza, cosa accade se due utenti accedono alla servlet quasi contemporaneamente ? Entrambi i thread saranno colpevoli di incrementare lo stesso valore del contatore, mostrando a video lo stesso risultato. Andrea Manconi
Persistenza • Il problema è dovuto alla necessità di sincronizzare l’utilizzo della variabile count, in modo che un thread alla volta possa operare su essa. • In java questo viene fatto utilizzando la parola chiave synchronized Andrea Manconi