cgi programming languages web based software development july 21, 2005 song, jaeha

21
CGI Programming Languages Web Based Software Developme nt July 21, 2005 Song, JaeHa

Upload: molly-mcdowell

Post on 24-Dec-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Programming Languages

Web Based Software DevelopmentJuly 21, 2005Song, JaeHa

Page 2: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Agenda

Introduction CGI Mechanism CGI Languages Alternatives Conclusion

Page 3: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Introduction: Definition

CGI: Common Gateway Interface A simple interface for running gateways In an information server In Platform-independent manner

Gateway: a program that provides path into internal applications or resources, such as database or file system

Page 4: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Introduction: Conceptual diagram

Script: The software that is invoked by the server according to this interface.

Server: The application program that invokes the script in order to service requests from the client.

Meta-variable: A named parameter which carries information from the server to the script.

Client Server ScriptsInternal services

HTTP RequestCGI RequestMeta-variable Internal Request

HTTP Response CGI Response Internal Response

Page 5: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Mechanisms: Server

As an Application gateway Receive request from client Select CGI script to handle request Convert client request to CGI request Execute script Convert CGI response into response for client

Authentication and security handling Manages special directory such as /cgi-bin CGI time-out handling Error page handling

Page 6: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Mechanisms: CGI request

Request meta-variables sources

Environment variables STDIN Command line arguments

CONTENT_TYPE REQUEST_METHOD QUERY_STRING CONTENT_LENGTH …

Request message body For POST method

Page 7: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Mechanisms: CGI response Response header fields

CGI-field Content-Type Location Status

Other-field Protocol-specific header fields Extension header fields

Response message body STDOUT

Page 8: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Mechanisms: Interface ports Input

STDIN POST method with 0 < CONTENT_LENGTH

Environment variables Request meta-variables

Command line argument ISINDEX query

Output STDOUT

Page 9: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: Only Perl ?

Almost written in Perl But, CGI needs only

environment variables STDIN/STDOUT command line arguments

Page 10: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: Others

C/C++ Fortran TCL Unix shells Visual Basic Apple scripts Ruby Etc.

Page 11: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: Choosing Others Perl is always best ? Concerns

Productivity Learning curve Execution overhead Etc.

Page 12: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: CGI in C

C for CGI Programming Well known: Short Learning Curve Low execution overhead inconvenient in String handling

Page 13: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: CGI Output in C

#include <stdio.h>void main() {

/** Print the CGI response header, required for all HTML output.**/

/** Note the extra \n, to send the blank line. **/printf("Content-type: text/html\n\n") ;

/** Print the HTML response page to STDOUT. **/ printf("<html>\n") ;printf("<head><title>CGI Output</title></head>\n") ; printf("<body>\n") ;printf("<h1>Hello, world.</h1>\n") ;printf("</body>\n") ;printf("</html>\n") ;exit(0) ;

}

Page 14: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: CGI I/O in C

#include <stdio.h>…main(int argc, char *argv[]) {

entry entries[MAX_ENTRIES];register int x,m=0;int cl;printf("Content-type: text/html%c%c",10,10);if(strcmp(getenv("REQUEST_METHOD"),"POST")) {

…}if(strcmp(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded")) {

printf("This script can only be used to decode form results. \n");exit(1);

}cl = atoi(getenv("CONTENT_LENGTH"));for(x=0;cl && (!feof(stdin));x++) {

…}…

}

Page 15: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: CGI in Ruby

Ruby for CGI Programming Packages for Productivity improvement

CGICGI::CookieCGI::HtmlExtensionCGI::QueryExtensionCGI::SessionCGI::Session::FileStoreCGI::Session::MemoryStoreCGI::Session::PStore

Stylish Under development Small user group

Page 16: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

CGI Languages: CGI in Ruby

#!/usr/bin/env rubyprint "HTTP/1.0 200 OK\r\n“print "Content-type: text/html\r\n\r\n“print "<html><body>Hello World!</body></html>\r\n"

require "cgi“

cgi = CGI.newvalue = cgi['field_name']fields = cgi.keyscgi.has_key?('field_name') cgi.include?('field_name') …

Page 17: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Alternatives: SSI/Servlets/Server API

SSI Server Side Includes Simple interface for basic dynamic content Non-standard

Servlets an alternative API for JAVA overcomes the limitation of JAVA not supporting environ

ment variables Server API

Generally the most powerful and most complex option Non portable Varies from server to server

Page 18: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Alternatives: Servlets/JSP Kinds of CGI scripts

Scripts: … It need not be a standalone program, but could be a dynamically loaded or shared library or even a subroutine in the server.

Servlets: Thread instead of process Lightweight : less overhead in execution Sharing states: i.e. session information Crash propagation Cold deploy

JSP: reversion between hosts and guests Contents oriented instead of control oriented Less ‘ ” ’ Easy to read Hot deploy

Page 19: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Alternatives: CGI Pros and Cons Advantages

Separation of concerns Server for client request handling Scripts for application issues

Simple

Drawbacks Performance Scalability Maintainability Security

Page 20: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

Conclusion

Common Gateway Interface A simple interface for information server

extension

For simple dynamic web programming

Any languages are possible when they supports minimum set of mechanisms STDIN/STDOUT Environment variables Able to invoke in Information server

Mainly in Perl

Page 21: CGI Programming Languages Web Based Software Development July 21, 2005 Song, JaeHa

References

CGI Programming RFC Page: http://www.faqs.org/rfcs/rfc3875.html

W3C’s CGI Pages: http://www.w3.org/CGI

CGI FAQ http://www.htmlhelp.com/faq/cgifaq.1.html

Another CGI FAQ: http://www.webthing.com/tutorials/cgifaq.html

Dynamic Programming Language Choice Criteria: http://www.apacheweek.com/features/dynamicpages

Ruby CGI: http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/

Web Programming Languages Introduction: http://www.freelance-help.com/web-programming.ph

p