为什么要CGI
因为一旦您使用了ASP,那么您就只能吊在微软的WINDOWS和IIS这棵树上。
ASP是微软的专有技术,ASP调用微软独有的系统和应用函数,只能在微软的操作系统和服务器下运行。有商业软件可以实现在APACHE下运行ASP,但是有附加费用和兼容性问题。而CGI则不同,它并不是一种技术,而是一个服务器与应用程序接口的公共标准。CGI程序能够被移植到任何操作系统和服务器下运行,不存在被操作系统和服务器供应商锁定的问题。众所周知,微软的WINDOWS NT与2000,都是从桌面操作系统发展而来的,尚未摆脱单人单机的设计思想的束缚,至到目前为止,NT/2000在安全性与稳定性方面仍然存在很大的漏洞和问题。最近的中美黑客大战中,被攻克的网站99%都是使用微软的系统。微软的操作系统和服务器安全漏洞之大令人触目惊心。只要到http://www.cert.org一看,就能找到最新发现的各种IIS漏洞,个个都足以致网站于死命。一个业余的电脑爱好者能够通过简单的访问一个URL就能用UNICODE、SADMIND等缺陷,把一个IIS网站改得面目全非,甚至全部摧毁。根据NETACRAFT(http://www.netcraft.com)对41个IIS网站的测试,三分之一的IIS网站存在明显漏洞。NETCRAFT估计有几十万个IIS网站已被黑客控制,随时可以被摧毁或利用,而网站管理员毫无知觉。相比之下,UNIX操作系统从一开始就是一个设计成永不关机的、多用户、多进程的操作系统,其安全性、稳定性在长期、广泛的使用中得到了实践的检验。
CGI是一个开放标准(OPEN STANDARDS)而不是专有技术,所有的WEB服务器,如APACHE,IIS,I-PLANET,NETSCAPE,ZEUS,都支持这一标准。CGI的高度安全和高度稳定,使它成为目前互联网上应用最广泛、最可靠的技术,随便在网上浏览,到处可见CGI的应用,没用CGI的是少数。如:
- 美国总统白宫:
(http://www.whitehouse.gov/cgi-bin/good-bye.cgi?url=http://www.firstgov.gov/) - 美国国会:
(http://www.senate.gov/cgi-bin/exitmsg?url=http://www.house.gov/) - 美国银行(BANK OF AMERICA) 在线银行,有三百万用户,是美国最大的在线银行:
https://onlineid.bankofamerica.com/cgi-bin/sso.login.controller - 微软自己的hotmail邮件服务和passport登录(在全世界有数千万用户),1997年微软试图把hotmail换成微软的技术,但是无法应付数千万用户的负载,最后不得不改回使用CGI,目前hotmail在美国就有三千四百万用户,是最大的邮件服务,也是微软引以为傲的拳头产品:
http://lc1.law13.hotmail.passport.com/cgi-bin/login
http://pv1fd.pav1.hotmail.msn.com/cgi-bin/hmhome? - 中国海尔的网上商城 :http://www.ehaier.com/cgi-bin/prod_zdtj4.htm
- 美国海军网站搜索引擎:http://www.chinfo.navy.mil/cgi-bin/htsearch
- E*TRADE (网上股票证券交易):
(http://www.etrade.ne.jp/cgi-bin/gx.cgi/AppLogic+Home) - 新浪网搜索引擎:
http://webpage.sina.com.cn/cgi-bin/webpage/webpage.cgi - 网易的邮件服务系统:
http://m220.163.com/cgi/ldapapp?funcid=main&sid=IAwBFvDOGlMAAegE - 美国的大型网站雅虎
- 美国的亚马逊网站
这些世界著名的机构和网络服务(包括微软的拳头产品hotmail),其安全性、稳定性要求是最高的,他们都是使用的CGI,随便在网上找,还可以找出大堆明显使用CGI的例子来。过去,微软曾经因为试图以其ASP取代CGI标准,故意宣扬CGI已经过时等错误观点,引起不少人误解,但是,微软经过实践发现这种想法是不现实的之后,又不得不删掉了这样的错误言论,并且给IIS加上了CGI的支持,事实上,微软已经以其实际行动证明CGI的优势。
CGI与ASP比较技术上如何?
我们可以从以下三个方面比较:性能,编程方法,设计方法。
有些人批评说,CGI需要产生一个新的进程处理用户请求,性能不佳。但是,在UNIX下FORK进程是非常高效的,传统的UNIX服务程序都是采用FORK进程的方式,FORK()所消耗CPU不会多于分析编译ASP网页的时间。况且CGI标准并未规定必须FORK新的进程,使用FAST CGI或MOD_PERL即可避免FORK新进程,其性能决不会亚于ASP。在一般硬件配置下,每秒进行数百次CGI访问是没有问题的。
编程方法上,CGI可以用程序员熟悉的任何语言开发,包括PERL,C/C++,PYTHON,JAVA,甚至Shell Script,可以使用DBFile,MySQL,ORACLE,SYBASE等数据库。而ASP则基本上是用微软的VBScript。没有哪个专业程序员会因为写VISUAL BASIC而感到特别自豪吧?
在设计方法上,ASP的思想是把程序嵌入在HTML文件中,把逻辑与表现方式混在一起,存在各种弊端。CGI的设计可以实现数据、逻辑和表现方式的分离,独立设计、改变三者。
由此可见,无论从哪个方面比较,除非您是微软的忠实门徒,ASP并非一个最佳选择。
根据NETCRAFT在2001年5月对全世界一千七百多万个网站的统计,目前使用UNIX的网站占百分之六十以上,并且在迅速增长,Windows和IIS占百分之二十左右。很多网站在经过IIS的痛苦之后,转换到UNIX服务器,为了适应这种情况,已有美国公司开发出能在UNIX和APACHE下运行ASP的商业软件,使原有的ASP网页在新环境下能够使用,但很显然,如果ASP用到了WINDOWS系统独有的功能,如COM、ActiveX、ADO等,是不可能移植到UNIX环境下的。
东方之晓的WEB软件大都是根据CGI标准用PERL5编写,并且与MOD_PERL兼容。这意味着我们的软件可以运行在任意操作系统和支持CGI标准的服务器下,而且可以在不同的平台之间转移。比如,如果您在IIS下运行神州建站通,一旦需要,可以很快的把整个系统和数据都移到LINUX下,继续正常运转。如果采用ASP的话,这样的转移是相当困难的。
为什么要CGI的更多相关文章
- CGI与FastCGI nginx+PHP-FPM
本文转载自CGI与FastCGI 1.当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html. ...
- CGI与FastCGI
当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html.事物总是不 断发展,网站也越来越复杂, ...
- CGI, FastCGI, WSGI, uWSGI, uwsgi简述
CGI 通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据.CGI描述了服务器和请求处理程 ...
- Servlet和CGI的区别
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...
- fastcgi与cgi的区别
fastcgi与cgi的区别 先讲下cgi:cgi在2000年或更早的时候用得比较多, 以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fo ...
- CGI与fastcgi与php-fpm与php-cgi的关系
cgi是一个协议,它规定了服务器Nginx会将那些数据传送给PHP-cgi fastcgi也可以说是一个协议.fastcgi是对cgi的性能的一次提高.fastcgi会先启动一个master,解析配置 ...
- CGI和ISAPI
1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座桥,把网页和WEB服务器 ...
- CGI概念
CGI(通用网关接口,Common Gateway Interface) CGI是Web服务器与请求处理程序之间传输数据的一种标准,保证Web服务器传递过来的数据是标准格式的,其程序须运行在网络服务器 ...
- boa + ajax + cgi ajax请求cgi
最近公司要做一个通讯管理机,然后需要和另外一个同事一起做,我们需要用到boa+Ajax+CGI,以前没试过与CGI交互,一开始发现问题挺大的,用ajax请求cgi,总是不返回数据,又或者请求回来的是c ...
- Easyui datagrid加载本地Json数据,CGI数据
网上示例(记得引用Jquery): [html] view plaincopy var jsonstr = '{"total":1,"rows":[{" ...
随机推荐
- Problem 1014 xxx游戏 暴力+拓扑排序
题目链接: 题目 Problem 1014 xxx游戏 Time Limit: 1000 mSec Memory Limit : 32768 KB 问题描述 小M最近很喜欢玩XXX游戏.这个游戏很简单 ...
- Selenium网址
Selenium官网:http://www.seleniumhq.org/ Selenium火狐插件地址:http://release.seleniumhq.org/selenium-ide/ 浏览器 ...
- 为什么很多应用都安装在/usr/local目录下
为什么很多应用都安装在/usr/local目录下 很多应用都安装在/usr/local下面,那么,这些应用为什么选择这个目录呢?理解了最根源的原因后,也许对你理解linux组织文件的方式有更直观的 ...
- django的模板页面里,如何获取一个集合的数据?
以前以为是用[下标],原来在模板,也作了变换,得用. 才能搞定. 如下例中的 object_list.0.server_type 'nginx' {% ifequal object_list.0.se ...
- lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II
题目: 删除排序数组中的重复数字 II 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2, ...
- 格林治时间,也就是返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数。
格林治时间,也就是返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数. (* Delphi获取13位格林治时间实现方法, 与java中的java.lang.System.currentT ...
- 开源入侵检测系统OSSEC搭建之二:客户端安装
上一篇文章中已经将OSSEC服务端的安装以及客户端的Key导出操作做了解说,接下来在另一台虚拟机中安装客户端,与安装服务端类似同样需要安装ossec,步骤如下. 一.下载ossec-hids-2.8. ...
- 机器学习 —— 概率图模型(Homework: Exact Inference)
在前三周的作业中,我构造了概率图模型并调用第三方的求解器对器进行了求解,最终获得了每个随机变量的分布(有向图),最大后验分布(双向图).本周作业的主要内容就是自行编写概率图模型的求解器.实际上,从根本 ...
- Bitmap 和Drawable 的区别
Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低.我们理解为一种存储对象比较好 ...
- P31、面试题2:实现Singleton模式
题目:设计一个类,我们只能生成该类的一个实例 java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单 ...