1 / 124

Web – services

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

Télécharger la présentation

Web – services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web – services Andrea Manconi IASC group DIEE – Departement of Eletrical and Eletronic Engineering manconi@diee.unica.it

  2. 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

  3. Web service

  4. 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

  5. Web service • Web page: statica. Non esiste iterazione • Web application: dinamica. Iterazione con l’utente Andrea Manconi

  6. Web application

  7. Web application • CGI • FastCGI • ASP • JSP • PHP • Java Servlet Andrea Manconi

  8. 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

  9. Web application - CGI • Vantaggi • Semplice da scrivere • Portabilità • Supporta molti linguaggi: es. C, Perl Andrea Manconi

  10. 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

  11. 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

  12. 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

  13. Web application - FastCGI • Vantaggi • Semplice • Facile migrare da applicazioni CGI ad applicazioni FastCGI • Alte performance (rispetto a CGI) • Molti linguaggi supportati Andrea Manconi

  14. 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

  15. 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

  16. Web application - ASP • Vantaggi • Facile da usare • Ottimizzato per piccoli contenuti dinamici Andrea Manconi

  17. 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

  18. Web application - ASP HelloWorld.asp <HTML><BODY><% For i = 3 To 7 %>   <FONT SIZE="<% = i %>">Hello World! <BR> <% Next %></BODY> </HTML> Andrea Manconi

  19. Web application - ASP Hello World!Hello World!Hello World!Hello World!Hello World! Andrea Manconi

  20. Web application - JSP Java Server Pages • Alternativa ad ASP basata su Java • Sviluppata da SUN • Forte legame con le servlet Andrea Manconi

  21. 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

  22. Web application - JSP • Svantaggi • Un solo linguaggio di script: JAVA • Ottimizzato per piccoli contenuti dinamici Andrea Manconi

  23. Web application - JSP HelloWorld.jsp <HTML> <BODY> Hello World! The time is now <%=new java.util.Date() %> </BODY> </HTML> Andrea Manconi

  24. 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

  25. 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

  26. 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

  27. Web application - PHP • Vantaggi: • Open – source !!! • Non è proprietario, e quindi non è ristretto a determinate piattaforme • Facile da utilizzare Andrea Manconi

  28. Web application - PHP • Svantaggi • Forte consumo di memoria da parte dell’interprete (variabili non necessariamente dichiarate) Andrea Manconi

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. Servlet vs CGI Andrea Manconi

  36. Servlet vs FastCGI • Servlet: gestione semplificata delle sessioni • FastCGI: possibilità di scelta tra più linguaggi • Servlet: PORTABILITA’ Andrea Manconi

  37. 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

  38. 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

  39. Servlet vs PHP • Java è ottimo per progetti complessi • Librerie • PHP utilizza i cookie ma non ha una gestione delle sessioni Andrea Manconi

  40. 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

  41. Servlet

  42. 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

  43. Persistenza

  44. 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

  45. 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

  46. 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

  47. 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

  48. Persistenza • Problema: se si utilizzano variabili locali non esistono problemi di interazione tra i thread, ma se si utilizzano variabili non locali … Andrea Manconi

  49. 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

  50. 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

More Related