试用EF开发WEB应用程序(1): 方案选择,为什么是FastCGI
题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/liigo/。在线留言。
试用EF开发WEB应用程序(1): 方案选择,为什么是FastCGI
通俗来说,目前的WEB应用程序开发模式主要有:
1、JSP/Servlet,ASP(ASP.NET)
2、ISAPI,NSAPI,Apache mod
3、PHP,PERL,ROR
这只是“通俗”的说法,分类并不科学。JSP、ASP(.net)各为两大集团所挟持,Microsoft拥有IIS可以自行其事,JAVA集团更猛,搞出一系列应用服务器出来(Weblogic, Websphere, Tomcat, Apusic)。ISAPI、NSAPI、Apache mod也都是与各自的WEB服务器紧密相关。PHP/PERL/ROR/...,并不一定采用哪种固定的解决方案,可能是FastCGI、Apache mod、ISAPI、NSAPI等。这么算下来,也只有 CGI/FastCGI 属于第三方标准,与操作系统、WEB服务器、编程语言等没有直接关联。
FastCGI 同CGI一样是一个WEB服务器与外部程序接口的标准,它是为解决CGI的性能问题而开发的一种技术。FastCGI对CGI技术进行了改良,一个FastCGI进程在WEB服务器启动时或在客户端第一次请求时创建,它处理完客户端请求后并不终止,而是等待处理下一个请求。另外FastCGI程序与CGI程序与服务器的交互方式也不同,CGI程序通过环境变量、命令行、标准输入输出进行交互,因此CGI程序进程必须与服务器进程在同一台物理计算机上,而FastCGI程序与服务器进程通过网络连接交互,因此FastCGI程序可以分布在不同的计算机上,这不但可以提高性能,同时也提高了系统的扩展能力。FastCGI程序与CGI程序保持二进制兼容,其运行效率一般是普通CGI程序的 3 - 5 倍以上。
目前的主流WEB服务器均支持FastCGI,PHP、PERL、RUBY等编程语言均提供FastCGI解决方案。
没错,我的选择就是 FastCGI 。FastCGI跟EF,理应是不错的搭配。
可能有人会说 FastCGI / CGI 此类技术太古老了,用的人不多。这个说法只对了一半。技术是不分新旧的,要论历史,TCP/IP更悠久,现在一样发挥着重要作用。说用的人不多,也不完全对。FastCGI/CGI 固然没有JSP/ASP两大NB阵营风光,可依然在PHP/PERL/RUBY(ROR)领域发挥着重要作用。说白了,非主流阵营(或小集团阵营,请容许我这么说),若想不依赖于任何强势集团,也只有选择这种第三方标准。选择CGI(FastCGI),是一种技术上的返璞归真。况且它在执行效率上有不可抗拒的优势。
顺便透露,“易语言.飞扬”(EF)的 FastCGI 类库(fastcgi.efn)已经初步完成,并且已经完成了第一个“Hello world” WEB应用程序。目前正在继续完善中。
下篇预告:用EF开发第一个动态网页(如果称之“WEB应用程序”未免有些牵强,呵呵)。