当前位置: 代码迷 >> CGI >> 为什么现在的几大门户网站还用CGI呀,不是很老的技术了吗.有什么优点?该如何解决
  详细解决方案

为什么现在的几大门户网站还用CGI呀,不是很老的技术了吗.有什么优点?该如何解决

热度:380   发布时间:2012-02-25 10:01:49.0
为什么现在的几大门户网站还用CGI呀,不是很老的技术了吗.有什么优点?
朋友想搞一个比较大一点的网站,想用JSP做,可是我发现几大门户网站用的是CGI+JSP,CGI不是很老的技术了吗,为什么还要用呢,难道CGI的执行效率要比JSP,PHP的效率还要高吗?了解了一下FastCGI,FastCGI的执行效率要比JSP,PHP高吗?要是高的话高多少??要是高并发量访问的话,是用FastCGI好一些,还是用JSP好一些,还是FastCGI+JSP更好一些?另外要是用CGI的话用什么语言开发好一些,C,C++还是perl???

------解决方案--------------------
诸如ASP,PHP都是靠CGI再解析的,你说快不快?
FastCGI不熟,我是用DELPHI写CGI的
------解决方案--------------------
晕死,

还是原始的好?
------解决方案--------------------
那是因为不想升级
------解决方案--------------------
那是因为不需要升级O.o
------解决方案--------------------
为什么现在使用 cgi 的网站那么少,FastCGI 更少了?

来自:
http://bbs.chinaunix.net/viewthread.php?tid=938577&extra=page%3D1

这个问题困惑了很多网友,
下文是一段半月前与某网友的讨论的整理, 希望对大家有帮助.

[问1]
我也是 c cgi 的坚定支持者,而且亲自试验过 FastCGI 的稳定性和高性能。但是很长时间我也没查明白:为什么现在使用 cgi 的网站那么少,FastCGI 更少了?

[答1]
你这个问题问的非常好,
都知道 CGI 只是个技术标准(目前使用的是 CGI/1.1), 因为该标准非常简单所有它很容易用各种高级语言和脚本语言进行描述; 但它也给 CGI 开发者带来了困难, 那就是过去没有非常好的开发工具以开发方便开发者开发复杂的应用. 很多时候它们不得不手工 printf 输入每一句 html 语句. 这样严重限制了传统 cgi 的发展;

与此同时, 另一批工具(暂时称之为泛 CGI吧), 如 asp, jsp, php, 它们继承了 CGI 标准的简单性, 同时提供了相应的解释或编译工具. 通过这些工具, 开发人员只要在 html/xml 模板文件中嵌入相应(脚本)语句即可, 特别是 asp.net 开发环境, php 之后的模板技术等, jsp 等 strust 框架等都为开发人员提供了更为抽象化的开发工具, 使开发人员彻底忘记了它们(asp, php, jsp等)的前身 CGI (之所以称它们为泛 CGI, 因为它们都是 CGI 技术的继承和发展者).

注: CGI 是指 WEB server 与 WEB 应用程序之间的通用接口标准, 即: Common Gateway Interface.

[问2]
原来如此,总觉得他们的原理和cgi类似,实际正是cgi的拓展和封装,我们完全可以自己用 c 编写更强的拓展和封装!

[答2]
是的, CSP/eybuild 是一种类似于 asp, jsp, php 的 C/C++ 语言的开发工具, 它能弥补了传统 C 开发 CGI 的不足, 同时提供了类似 asp, jsp, php的模板技术,虚拟目录,自动扫描链接等技术, 使 c 开发人员可以不编写一句 c 代码的的情况下即可编写一完整的站点框架, c 开发人员只要专注编写逻辑处理即可, 使得 c 开发人员和 html/jsp/css 等开发人员进行有效的分离. 这使得 cgi 编写非常简单, asp, php, jsp 等的站占只是换一编程即可.
csp/eybuild 对 fastcgi 拥有很好的支持和裁剪性, 只要在添加一个编译选项 cgi 程序即转成了 fastcgi 程序

[问3]
php的性能是因为成了服务器的模块,但是 c cgi 也能编写成模块的模式,特别是 FastCGI 天生几乎就是服务器的模块,可是为什么用的人那么少呢?
而且我自己的试验证明,FastCGI 极稳定,不稳定基本是程序没编写好,有内存泄露、忘记重置等问题造成的.

[答3]
PHP 也可以作为 CGI 运行, 同时也支持 FastCGI.
php 性能是因为成了服务器的模块, 这导致 php 非常依赖服务器, 所以通常 php 只在 apahce 服务器具有非常好的性能, 换个 webserver 甚至它是不能运行的. 严格遵守 CGI 标准的应用工具应该是不存在这些问题的.
不过, 在适当的应用中, 为了性能牺牲一些特性为是必要的.

对 FastCGI 要有充分的信心, FastCGI 没有问题, 在很多应用中证明它都有很好的表现.
前面提及, 用的少主要原因是在 CSP/eybuild 之前大家没有很好的编写复杂应用的 CGI 开发工具.

[问4]
实际应用上,多数人会选择 apache 或 IIS ...

[答4]
WEB 服务应用领域是主要用这两个服务器, 不过其它 web 应用(如设备管理/控制等), 使用的 webserver 就很广泛了, 如 thttpd, mini-httpd, goAhead, lighttpd, boa, ...
它们可能还要运行在不同的 CPU 架构(如 inter, xscale, arm, mips, ...)下, 不同的存储器限定环境中(如只有 2M, 8M, 16M的内存) 无硬盘, 只有几M的 flash 等,
这些环境的应用中, 目前最主要的 web 开发语言都是 c, ...

[问5]
我认为随着ajax应用的普及,模板技术有逐渐被取代的趋势

[答5]
ajax 是一种非常不错客户端技术, 通在不刷新整个页面的情况下给用户带来很新体验. 它服务器端的技术互相补充相互依赖, 从目前的形式看, 还很难说谁会取代谁的趋势. 根据项目和应用不同, 开发者应该灵活选择它们要选用的开发工具和开发技术, 并进一有效的融合, 不宜单纯一味追求某一技术.
不得不承认, 包括 CSP/eybuild 的很多开发应用都采用了 Ajax .

[问6]
web标准客户端的结构、表现、行为分离,确实是好框架,是发展趋势,而且能简化服务器端开发。我认为随着应用的普及,模板技术会被取代。那时候,开发服务端只要编程就可以了,完全脱离页面的束缚。

[答6]
呵呵, W3C 关于 结构、表现、行为分离 确实极大地推动了 web 技术的发展,
但它主要是指结构-(html)、表现(css)、行为(js) 三者的分离, 是一种客户端技术, 与取代模板关系不大.
一般认为 ajax 的目标把富客户端, 弱服务器, 它可能对 服务器端的模板技术有一对冲击.

另外, CSP/eybuild 的 eyForm(javascript 库) 就是关于结构与行为分离的有效性检查的 JS 库, 会对你理解结构、表现、行为分离有所帮助.

以上只是个人的拙见, 希望能解答你的问题.

  相关解决方案