为什么要CGI

1.微软为什么使用CGI?
微软曾经在不同场合极力推荐它的ASP技术,以取代CGI标准,这对微软当然是有利的,但是对一个网站来说ASP是不是一个明智的选择呢?这是一个值得大家深思熟虑的问题。

因为一旦您使用了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的话,这样的转移是相当困难的。

原文地址:https://www.cnblogs.com/liangxiaofeng/p/4910942.html