Comparison of Web Services and Web Application Technologies
1.24k likes | 1.33k Views
Explore the differences between CGI, FastCGI, ASP, JSP, PHP and Java Servlets in web services and applications, including advantages, disadvantages, and code examples.
Comparison of Web Services and Web Application Technologies
E N D
Presentation Transcript
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