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的话,这样的转移是相当困难的。

为什么要CGI的更多相关文章

  1. CGI与FastCGI nginx+PHP-FPM

    本文转载自CGI与FastCGI 1.当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html. ...

  2. CGI与FastCGI

    当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html.事物总是不 断发展,网站也越来越复杂, ...

  3. CGI, FastCGI, WSGI, uWSGI, uwsgi简述

    CGI 通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据.CGI描述了服务器和请求处理程 ...

  4. Servlet和CGI的区别

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...

  5. fastcgi与cgi的区别

    fastcgi与cgi的区别 先讲下cgi:cgi在2000年或更早的时候用得比较多, 以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fo ...

  6. CGI与fastcgi与php-fpm与php-cgi的关系

    cgi是一个协议,它规定了服务器Nginx会将那些数据传送给PHP-cgi fastcgi也可以说是一个协议.fastcgi是对cgi的性能的一次提高.fastcgi会先启动一个master,解析配置 ...

  7. CGI和ISAPI

    1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座桥,把网页和WEB服务器 ...

  8. CGI概念

    CGI(通用网关接口,Common Gateway Interface) CGI是Web服务器与请求处理程序之间传输数据的一种标准,保证Web服务器传递过来的数据是标准格式的,其程序须运行在网络服务器 ...

  9. boa + ajax + cgi ajax请求cgi

    最近公司要做一个通讯管理机,然后需要和另外一个同事一起做,我们需要用到boa+Ajax+CGI,以前没试过与CGI交互,一开始发现问题挺大的,用ajax请求cgi,总是不返回数据,又或者请求回来的是c ...

  10. Easyui datagrid加载本地Json数据,CGI数据

    网上示例(记得引用Jquery): [html] view plaincopy var jsonstr = '{"total":1,"rows":[{" ...

随机推荐

  1. Azure VM 远程无法登陆问题(No Remote Desktop License)

    解决方法: 打开 Wins+R=> mstsc /v: yourVMIPadress /admin mstsc /v:xx.xx.xx.xx:54738 /admin

  2. mac 搭建git服务器

      一.简单搭建,不提供复杂的权限管理: 远程建立git用户,并打开ssh服务:见http://www.cnblogs.com/whj198579/archive/2013/04/09/3009350 ...

  3. 【BZOJ】【2190】【SDOI2008】仪仗队

    欧拉函数/莫比乌斯函数 Orz iwtwiioi 这个嘛……很明显在同一条线上的两个点一定是满足  x1*k=x2,y1*k=y2,(好吧这个表示方式有点傻逼,懂得就好了)那么这条线上的点只有第一个会 ...

  4. [BC]BestCoder Round#86小结

    1001 [题意] 给定一个长度为n(n<=100000)的正整数序列,给出m(m<=100000)个子集合和的记录,问哪些一定比正确的记录多了 [题解] 对正整数序列求和,记录比和大的一 ...

  5. Bootstrap 基础

    一种前端开发框架,如同YUI 下载源码找开后,其文件结构如下: bootstrap/├── css/│   ├── bootstrap.css│   ├── bootstrap.min.css│   ...

  6. [转载]WebBrowser控件表单(form)的自动填写和提交

    话说有了WebBrowser类,终于不用自己手动封装SHDocVw的AxWebBrowser这个ActiveX控件了.这个类如果仅仅作为一个和IE一模一样浏览器,那就太没意思了(还不如直接用IE呢). ...

  7. json封装与解析

    #include <iostream> #include <boost/property_tree/ptree.hpp> #include <boost/property ...

  8. PHP之list()函数讲解

    定义和用法 list() 函数用数组中的元素为一组变量赋值. 注意,与 array() 类似,list() 实际上是一种语言结构,不是函数. 语法 list(var1,var2...) 参数 描述 v ...

  9. hibernate里createSQLQuery

    一.addEntity()和setResultTransformer()方法 1. 使用SQLQuery 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.creat ...

  10. linux源代码阅读笔记 linux文件系统(二)

    上一篇文章说到linux文件系统中分为超级块,inode块,block块.inode块给出文件的权限,修改时间,大小等信息. 但是实际上,文件的数据是存储在block块中的.而inode块中给出了存储 ...