Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 CS122B: Projects in Databases and Web Applications Spring 2015 Notes 03: Web-App Architectures Professor Chen Li Department of Computer Science CS122B.

Similar presentations


Presentation on theme: "1 CS122B: Projects in Databases and Web Applications Spring 2015 Notes 03: Web-App Architectures Professor Chen Li Department of Computer Science CS122B."— Presentation transcript:

1 1 CS122B: Projects in Databases and Web Applications Spring 2015 Notes 03: Web-App Architectures Professor Chen Li Department of Computer Science CS122B

2 2 Outline Web applications: overview CGI and its variants Server Extension APIs Java servlets Comparisons

3 CS122B3 Web Applications Create dynamic content for a web page –keyword search on a document archive –E-commerce –…–… Example: –Amazon.com –Google.com

4 CS122B4 CGI CGI (Common Gateway Interface) –One of the first techniques for creating dynamic HTML pages Goal: –Define a standard method for a server to talk with external applications Example: http://www.tigernt.com/cgi-bin/ecdict.cgi

5 CS122B5 Main Process CGI-based Web Server e.g., apache Child Process for CGI1 Child Process for CGI1 Request for CGI 1 Request for CGI 1 Request for CGI 2 Child Process for CGI2 Child Process for CGI2 Child Process for CGI1 Child Process for CGI1 CGI life cycle

6 CS122B6 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.

7 CS122B7 Processes are expensive Comparison between processes and threads http://www.cs.berkeley.edu/~istoica/classes/ cs194/05/notes/4-ProcThread.pdf

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

9 CS122B9 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.

10 CS122B10 Languages for CGI Scripts C/C++ Perl is becoming popular: – advanced text-processing capabilities – big help in managing details of CGI interface – platform independence –  requires each request start a separate Perl interpreter, which takes even more time and requires extra resources.

11 CS122B11 Ways to improve cgi performance FastCGI Other solutions

12 CS122B12 Main Process CGI-based Web Server Single Child Process for CGI1 Single Child Process for CGI1 Request for CGI 1 Request for CGI 1 Request for CGI 2 Child Process for CGI2 Child Process for CGI2 FastCGI http://www.rebol.com/docs/fastcgi.html

13 CS122B13 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. See: http://www.fastcgi.com/http://www.fastcgi.com/

14 CS122B14 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 For performance improvement, check: http://www.fastcgi.com/archives/fastcgi-developers/2009- May/000245.html http://www.fastcgi.com/archives/fastcgi-developers/2009- May/000245.html

15 CS122B15 Other solutions Proprietary solutions that work only with certain web servers. Platform dependent Examples: ASP (Microsoft), Server-side JavaScript (Netscape)

16 CS122B16 Server Extension APIs Proprietary server extension APIs for example: –Netscape provides an internal API called NSAPI –Microsoft provides ISAPI –Exist within the main process of a web server

17 CS122B17 Request for Server Extension 1 Main Process Web Server with Server Extension API Server Extension 1 Server Extension 2 Request for Server Extension 2 Request for Server Extension 1 Server Extension APIs life cycle

18 CS122B18 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.

19 CS122B19 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

20 CS122B20 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

21 CS122B21 ASP example http://www.w3schools.com/asp/showasp.asp?filename=demo_text http://www.w3schools.com/asp/showasp.asp?filename=demo_format tinghttp://www.w3schools.com/asp/showasp.asp?filename=demo_format ting The browser shows: Hello World!

22 CS122B22 Server-side JavaScript (SSJS) Developed by Netscape Allows snippets of code to be embedded in HTML pages to generate dynamic web content. Difference: SSJS uses JavaScript as the scripting language. Support for server-side JavaScript is available only with Netscape FastTrack Server and Enterprise Server Version 2.0 and above.

23 A Servlet is a Service Unit Java Servlet Based Web Server Main Process Web Server JVM Servlet1 Servlet2 Request for Servlet 1 Threa d Request for Servlet 1 Threa d Request for Servlet 2 Threa d CS122B23

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

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

26 Servlet Package Hierarchy JAVAX GenericServlet Servlet HttpServlet Form Servlet Admin Servlet CGI Servlet Error Servlet File Servlet Image Servlet CS122B26

27 The Servlet Interface Servlet interface { void init(ServletConfig sc) throws ServletException; void service(ServletRequest req, ServletResponse res); throws ServletException, IOException; void destroy(); } CS122B27

28 GenericServlet Class http://java.sun.com/j2ee/1.4/docs/api/javax/servl et/GenericServlet.html Server request response service( ) GenericServlet subclass Override the service() method CS122B28

29 HttpServlet Class http://java.sun.com/j2ee/1.4/docs/api/javax/servl et/http/HttpServlet.html java.lang.Object  javax.servlet.GenericServlet  javax.servlet.http.HttpServletjavax.servlet.GenericServlet A function: protected void doGet(HttpServletRequest req, HttpServletResponse resp)doGetHttpServletRequest HttpServletResponse CS122B29

30 Request and Response Objects They form the core objects for communication. HttpServletRequest contains all the details about the client request to the servlet. For e.g., request.getParameter(”paramName”); HttpServletResponse contains all the information for replying back to the client. For e.g., the output stream. CS122B30

31 CS122B31 Comparisons CGI/FastCGI: 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.

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


Download ppt "1 CS122B: Projects in Databases and Web Applications Spring 2015 Notes 03: Web-App Architectures Professor Chen Li Department of Computer Science CS122B."

Similar presentations


Ads by Google