Download presentation
Presentation is loading. Please wait.
Published byLeon Waters Modified over 6 years ago
1
CS122B: Projects in Databases and Web Applications Spring 2018
Notes 07: Web-App Architectures Professor Chen Li Department of Computer Science CS122B
2
Outline Web applications: overview CGI and its variants
Server Extension APIs Java servlets Comparisons CS122B
3
Web Applications Create dynamic content for a web page Example:
keyword search on a document archive E-commerce … Example: Amazon.com Google.com CS122B
4
CGI CGI (Common Gateway Interface) Goal: Example:
One of the first techniques for creating dynamic HTML pages Goal: Define a standard method for a server to talk with external applications Example: CS122B
5
CGI life cycle Main Process CGI-based Web Server e.g., apache
Request for CGI 1 Child Process for CGI1 Request for CGI 2 Child Process for CGI2 Request for CGI 1 Child Process for CGI1 CS122B
6
CGI Life Cycle (cont) Server receives a request for a CGI program
Server creates a new process to run the CGI program Server passes information to the program: via environment variables and standard input. CS122B
7
Processes are expensive
Comparison between processes and threads CS122B
8
Problems with CGI Expensive to create a process for each request:
requires time and significant server resources, limits the # of requests a server can handle concurrently Stateless: No history remembered “Memento” A big problem for web-based development Solutions: cookies Still expensive CS122B
9
Problems with CGI (cont)
Once the CGI program starts: It cannot interact with the web server It cannot take advantage of the server's abilities once it begins execution Reasons: the program is running in a separate process. Example, a CGI script cannot write to the server's log file. CS122B
10
Ways to improve cgi performance
FastCGI Other solutions CS122B
11
FastCGI Main Process CGI-based Web Server Request for CGI 1
Single Child Process for CGI1 Request for CGI 2 Child Process for CGI2 Request for CGI 1 CS122B
12
FastCGI (cont) Developed by a company “Open Market”
FastCGI creates a single persistent process for each FastCGI program It eliminates the need to create a new process for each request. CS122B
13
FastCGI: / No need to start multiple processes for different requests for the same fastcgi program Still needs one process for each cgi program. Thus not scalable to handle many concurrent requests It does nothing to help the FastCGI program more closely interact with the server. Not implemented by some of the more popular servers, I.e., Microsoft's Internet Information Server. Not very portable CS122B
14
Other solutions Proprietary solutions that work only with certain web servers. Platform dependent Examples: ASP (Microsoft) CS122B
15
Server Extension APIs life cycle
Main Process Web Server with Server Extension API Server Extension 1 Server Extension 2 Request for Server Extension 1 Request for Server Extension 2 Request for Server Extension 1 CS122B
16
Server Extension APIs
Write server extensions that enhance or change the base functionality of the server Allowing the server to handle tasks that were once relegated to external CGI programs. Use linked C or C++ code Thus can run extremely fast; and make full use of the server's resources. CS122B
17
Server Extension APIs:
Difficult to develop and maintain Pose significant security and reliability hazards a crashed server extension can bring down the entire server. Proprietary server extensions are tied to the server API on a particular OS Not very portable CS122B
18
Active Server Pages (ASP)
Developed by Microsoft With ASP, an HTML page on the web server can contain snippets of embedded code: usually VBScript or Jscript it's possible to use nearly any language This code is read and executed by the web server before it sends the page to the client. ASP is optimized for generating small portions of dynamic content. Support for ASP is built into Microsoft Internet Information Server Version 3.0 and above CS122B
19
ASP example <html> <body> <% response.write("Hello World!") %> </body> </html> The browser shows: Hello World! CS122B
20
Java Servlet Based Web Server
Main Process Web Server JVM Request for Servlet 1 Thread Servlet1 Thread Request for Servlet 2 Thread Servlet2 Request for Servlet 1 A Servlet is a Service Unit CS122B
21
Life With Servlets A servlet is a service unit which runs inside a web server, extending its functionality beyond the basic GET, POST, DELETE and PUT operations. CS122B
22
Inside a Servlet A servlet does not have a main() method.
a Java program: yes an applet: no Certain methods of a servlet are invoked by the server in the process of handling requests. Each time the server dispatches a request to a servlet, it invokes the servlet's service() method. CS122B
23
Servlet Package Hierarchy
JAVAX Servlet GenericServlet HttpServlet Form Servlet Admin Servlet CGI Servlet Error Servlet File Servlet Image Servlet CS122B
24
The Servlet Interface Servlet interface { void init(ServletConfig sc)
throws ServletException; void service(ServletRequest req, ServletResponse res); throws ServletException, IOException; void destroy(); } CS122B
25
Override the service() method
GenericServlet Class et/GenericServlet.html Server GenericServlet subclass request service( ) response Override the service() method CS122B
26
HttpServlet Class et/http/HttpServlet.html java.lang.Object javax.servlet.GenericServlet javax.servlet.http.HttpServlet A function: protected void doGet(HttpServletRequest req, HttpServletResponse resp) CS122B
27
Request and Response Objects
They form the core objects for communication. HttpServletRequest contains all the details about the client request to the servlet. E.g., request.getParameter(”paramName”); HttpServletResponse contains all the information for replying back to the client. For e.g., the output stream. CS122B
28
Comparisons CGI/FastCGI: Servlets:
use multiple processes to handle separate programs and/or separate requests Outside the server Servlets: handled by separate threads within the web server process. Thus more efficient and scalable. can interact very closely with the server to do things that are not possible with CGI scripts. CS122B
29
Comparisons (cont) Java Servlets are portable:
across operating systems (java) across web servers, since all major web servers support servlets. Thus, Java servlets offer a good platform for web-application development CS122B
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.