CGI stands for "Common Gateway Interface". CGI is one
method by which a web server can obtain data from (or send data to)
databases, documents, and other programs, and present that data to
viewers via the web. More simply, a CGI is a program intended to be run
on the web. A CGI program can be written in any programming language,
but Perl is one of the most popular, and other languages are:
If you're going to create web pages, then at some
point you'll want to add a counter, a form to let visitors send you
mail or place an order, or something similar. CGI enables you to do that
and much more. From mail-forms and counter programs, to the most
complex database programs that generate entire websites on-the-fly, CGI
programs deliver a broad spectrum of content on the web today.
When a web server gets a request for a static web
page, the web server finds the corresponding HTML file on its
filesystem. When a web server gets a request for a CGI script, the web
server executes the CGI script as another process (i.e., a separate
application); the server passes this process some parameters and
collects its output, which it then returns to the client just as if had
been fetched from a static file.
CGI programming involves designing and writing
programs that receive their starting commands from a Web page-usually, a
Web page that uses an HTML form to initiate the CGI program. The HTML
form has become the method of choice for sending data across the Net
because of the ease of setting up a user interface using the HTML Form
and Input tags. With the HTML form, you can set up input windows,
pull-down menus, checkboxes, radio buttons, and more with very little
effort. In addition, the data from all these data-entry methods is
formatted automatically and sent for you when you use the HTML form.
CGI programs don't have to be started by a Web
page, however. They can be started as the result of a Server Side
Include (SSI) execution command. You even can start a CGI program from
the command line. But a CGI program started from the command line
probably will not act the way you expect or designed it to act. Why is
that? Well, a CGI program runs under a unique environment. The WWW
server that started your CGI program creates some special information
for your CGI program, and it expects some special responses back from
your CGI program.
Before your CGI program is initiated, the WWW
server already has created a special processing environment for your CGI
program in which to operate. That environment includes translating all
the incoming HTTP request headers into environment variables that your
CGI program can use for all kinds of valuable information. In addition
to system information (such as the current date), the environment
includes information about who is calling your CGI program, from where
your program is being called, and possibly even state information to
help you keep track of a single Web visitor's actions. State information
is anything that keeps track of what your program did the last time it
was called.
Next, the server tries to determine what type of
file or program it is calling because it must act differently based on
the type of file it is accessing. So, your WWW server first looks at the
file extension to determine whether it needs to parse the file looking
for SSI commands, execute the Perl interpreter to compile and interpret a
Perl program, or just generate the correct HTTP response headers and
return an HTML file.
After your server starts up your SSI or CGI
program (or even HTML file), it expects a specific type of response from
the SSI or CGI program. If your server is just returning an HTML file,
it expects that file to be a text file with HTML tags and text in it. If
the server is returning an HTML file, the server is responsible for
generating the required HTTP response headers, which tell the calling
browser the status of the browser's request for a Web page and what type
of data the browser will be receiving, among other things.
The SSI file works almost like a regular HTML
file. The only difference is that, with an SSI file, the server must
look at each line in the file for special SSI commands. If it finds an
SSI command, it tries to execute it. The output from the executed SSI
command is inserted into the returned HTML file, replacing the special
HTML syntax for calling an SSI command. The output from the SSI command
will appear within the HTML text just as if it were typed at the
location of the SSI command. SSI commands can include other files,
execute system commands, and perform many useful functions. The server
uses the file extension of the requested Web page to determine whether
it needs to parse a file for SSI commands. SSI files typically have the
extension .shtml.
If the server identifies the file as an
executable CGI program, it executes the program as appropriate. After
the server executes your CGI program, your program normally responds
with the minimum required HTTP response headers and then some HTML tags.
If your CGI program is returning HTML, it should output a response
header of Content-Type: text/html. This gives the server enough
information to generate any other required HTTP response headers.
What is CGI Programming
CGI programming is writing the programs that
receive and translate data sent via the Internet to your WWW server. CGI
programming is using that translated data and understanding how to send
valid HTTP response headers and HTML tags back to your WWW client.
Why is it called gateway?
your program acts as a gateway or interface
program between other, larger applications. CGI programs often are
written in scripting languages such as Perl. Scripting languages really
are not meant for large applications. You might create a program that
translates and formats the data being sent to it from applications such
as online catalogs, for example. This translated data then is passed to
some type of database program. The database program does the necessary
operations on its database and returns the results to your CGI program.
Your CGI program then can reformat the returned data as needed for the
Internet and return it to the online catalog customer, thus acting as a
gateway between the HTML catalog, the HTTP request/response headers, and
the database program.
Alternative Technologies !
There are various alternatives to CGI in which
most of them avoid the main drawback to CGI scripts: creating a separate
process to execute the script every time it is requested and some of
also try to make less of a distinction between HTML pages and code by
moving code into HTML pages. Some of major alternatives to CGI are:
- ASP
- PHP
- FastCGI
- mod_perl
- ColdFusion
- Java servlets
ASP
ASP stands for Active Server Pages. ASP is a
Microsoft Technology that runs inside IIS. IIS stands for Internet
Information Services. An ASP file is just the same as an HTML file, it
can contain text, HTML, XML, and scripts. Scripts in an ASP file are
executed on the server. An ASP file has the file extension
&.asp&.
ASP can dynamically edit, change, or add any
content of a Web page. Respond to user queries or data submitted from
HTML forms. Access any data or databases and return the results to a
browser. Customize a Web page to make it more useful for individual
users. The advantages of using ASP instead of CGI and Perl, are those of
simplicity and speed. Povide security - since ASP code cannot be viewed
from the browser.
PHP
PHP stands for PHP: Hypertext Preprocessor. It is
a server-side scripting language, like ASP. PHP scripts are executed on
the server. PHP supports many databases (MySQL, Informix, Oracle,
Sybase, Solid, PostgreSQL, Generic ODBC, etc.). PHP is an open source
software and is free to download and use. PHP files can contain text,
HTML tags and scripts. PHP files are returned to the browser as plain
HTML. PHP files have a file extension of ".php", ".php3", or ".phtml".
FastCGI
FastCGI is simple because it is actually CGI with only a few extensions:
Like CGI, FastCGI is also language-independent.
For instance, FastCGI provides a way to improve the performance of the
thousands of Perl applications that have been written for the Web.
Like CGI, FastCGI runs applications in processes
isolated from the core Web server, which provides greater security than
APIs. (APIs link application code into the core Web server, which means
that a bug in one API-based application can corrupt another application
or the core server; a malicious API-based application can, for example,
steal key security secrets from another application or the core server.)
Although FastCGI cannot duplicate the
universality of CGI overnight, the FastCGI developers are committed to
propagating FastCGI as an open standard. To that end, free FastCGI
application libraries (C/C++, Java, Perl, Tcl) and upgrade modules for
popular free servers (Apache, ISS, Lighttpd) are available.
Like CGI, FastCGI is not tied to the internal
architecture of any Web server and is therefore stable even when server
technology changes. An API reflects the internal architecture of a Web
server, so when that architecture changes, so does the API.
mod_perl
mod_perl is more than CGI scripting on steroids.
It is a whole new way to create dynamic content by utilizing the full
power of the Apache web server to create stateful sessions, customized
user authentication systems, smart proxies and much more. And your old
CGI scripts will continue to work and work very fast indeed.
mod_perl is an optional module for the Apache
HTTP server. It embeds a Perl interpreter into the Apache server, so
that dynamic content produced by Perl scripts can be served in response
to incoming requests, without the significant overhead of re-launching
the Perl interpreter for each request.
ColdFusion
ColdFusion is the hot way to create dynamic
webpages that link to just about any database. ColdFusion is a
programming language based on standard HTML (Hyper Text Markup Language)
that is used to write dynamic webpages. It lets you create pages on the
fly that differ depending on user input, database lookups, time of day
or whatever other criteria you dream up! ColdFusion pages consist of
standard HTML tags such as , together with CFML
(ColdFusion Markup Language) tags such as <CFQUERY>, <CFIF>
and <CFLOOP>. ColdFusion was introduced by Allaire in 1996,
acquired by Macromedia in a merger in April 2001, and acquired by Adobe
in December 2005.
Java Servlet
Servlets are the Java platform technology of
choice for extending and enhancing Web servers. Servlets provide a
component-based, platform-independent method for building Web-based
applications, without the performance limitations of CGI programs. And
unlike proprietary server extension mechanisms (such as the Netscape
Server API or Apache modules), servlets are server- and
platform-independent. This leaves you free to select a "best of breed"
strategy for your servers, platforms, and tools.
Servlets have access to the entire family of Java
APIs, including the JDBC API to access enterprise databases. Servlets
can also access a library of HTTP-specific calls and receive all the
benefits of the mature Java language, including portability,
performance, reusability, and crash protection.
Today servlets are a popular choice for building
interactive Web applications. Third-party servlet containers are
available for Apache Web Server, Microsoft IIS, and others. Servlet
containers are usually a component of Web and application servers, such
as BEA WebLogic Application Server, IBM WebSphere, Sun Java System Web
Server, Sun Java System Application Server, and others.
No comments:
Post a Comment