`
csstome
  • 浏览: 1528361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

试用EF开发WEB应用程序(2): Hi, FastCGI (附图)

阅读更多

题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/liigo/在线留言


试用EF开发WEB应用程序(2): Hi, FastCGI

在前一篇文章中,我们已经选择了FastCGI作为EF开发WEB应用程序的技术方案,并且提到已经初步完成了EF的FastCGI类库(fastcgi.efn,点击下载)。下面试用EF编写我们的第一个网络应用程序。

请看以下“易语言.飞扬”(EF)源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

引入 fastcgi;

公开 类 启动类
{
公开 静态 启动()
{
int count = 1;
FCGI fcgi = new FCGI();
while(fcgi.Accept() >= 0)
{
fcgi.Output("Content-type: text/html\r\n\r\n");
fcgi.Output("Hi, FastCGI. ".重复(count));
count++;
}
}
}

看到以上代码,尤其是“while(fcgi.Accept() >= 0)”这一行,我想很多熟悉FastCGI编程的朋友都会会心地一笑,呵呵,太象了,这分明就是典型的 FastCGI 编程模式嘛。

现在简单分析一下以上代码。第1行引入fastcgi类库。第3到6行是EF语言的语法元素,略过不提。第7行定义一个整数型变量count,其用意后面还要讲到。第8行,创建一个FCGI类型(此类型来自类库fastcgi.efn)的变量fcgi。第9行,调用fcgi.Accept()方法循环接收客户端HTTP请求(HTTP Request)。第11行,调用fcgi.Output()方法,告知WEB服务器后面将要返回的内容类型(Content-type),这是必须的。第12行,调用fcgi.Output()方法,向客户端返回数据内容。第13行,变量count的值在原值基础上加1。

根据FastCGI原理,当有多个客户端请求到来时,程序流程会始终在第9行处的while循环中流转,没有客户端请求时,程序流程将暂停于fcgi.Accept()内部。这也正是FastCGI在运行效率上优于CGI的主要原因(CGI每接收一个Request都会启动CGI程序,执行后又退出该程序)。我们可以通过count变量来验证这一点。count在第7行被初始为1,以后每收到一个请求,它的值都会加1;而第12行的输出内容,又取决于count的值,所以结果应该是:第一次输出一遍“Hi, FastCGI. ”,第二次(刷新)输出两遍“Hi, FastCGI. ”,第三次(刷新)输出三遍……。在线演示。下面的图片证实了我们的推论:

hifastcgi.gif

(上图中URL文件后缀名".efcgi"取决于WEB服务器配置,这里取其"EF"+"FCGI"之意。)

WEB服务器的选择

要执行FastCGI程序,必须有支持FastCGI的WEB服务器。目前主流的WEB服务器均提供FastCGI支持。

Lighttpd 是一个轻量级WEB服务器,性能很好,内存和CPU资源消耗很低,又专门对FastCGI有过优化,是首选;Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,以其快速、低耗、稳定、高并发而闻名,是次选;Apache名气虽大,对FastCGI支持据说并不太好,是末选。

在Windows操作系统下做FastCGI应用程序开发测试,可选择MyServer。本人开发测试暂用此WEB服务器。

下篇预告:使用Query String。

分享到:
评论

相关推荐

    用C++开发Web 商用程序

    本主题将深入探讨如何利用C++技术构建Web应用程序,尤其关注其在商业环境中的应用。 一、C++与Web开发的基础 1.1 C++语言基础:C++是一种静态类型、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持...

    fastcgipp:fastcgi ++:一个C ++ FastCGI和Web开发平台:

    FastCGI++,又称为fastcgipp,是一个基于C++语言的FastCGI开发库,旨在为Web开发者提供一个高效、灵活的框架,用于构建高性能的Web应用程序。FastCGI是一种通信协议,它允许Web服务器与外部进程进行长时间连接,从而...

    用VC++开发FastCGI+MySQL的基本源代码

    在IT行业中,FastCGI(Fast Common Gateway Interface)是一种用于提高Web服务器性能的技术,它能够使Web服务器与外部应用程序(如动态脚本语言解释器)进行高效通信。FastCGI的核心理念是保持进程常驻,避免每次...

    sharpfastcgi:C#fastcgi协议实现以及shome使用示例。 一个很好的示例,说明如何在无需iis或mono的情况下自托管Web应用程序

    一个很好的示例,说明了如何在不需要IIS或Mono的情况下自托管Web应用程序。 此实现的目的是提供一种比Mono所提供的解决方案更可靠的解决方案,并且还提供一种更清洁,可重用的协议实现,以承载ASP.NET应用程序以及...

    FastCGI手册

    FastCGI是一种用于提高Web应用程序性能的技术,尤其适用于提高动态网页处理的速度。它通过优化传统的CGI(Common Gateway Interface)模型,解决了CGI效率低下的问题。FastCGI可以让程序在启动后持续运行,以响应后续...

    使用 Go 创建 Web 应用程序的最简单方法.zip

    使用 Go 创建 Web 应用程序的最简单方法web.goweb.go 是用 Go 编程语言编写 Web 应用程序的最简单方法。它是编写简单、高性能的后端 Web 服务的理想选择。概述对于使用 sinatra 或 web.py 等高级 Web 框架开发过网站...

    完整版 web应用开发 web网站建设实用教程 第6-3讲 PHP web开发环境(共152页).ppt

    同时,熟悉MySQL的基本操作,如创建数据库、表,以及查询语言SQL,是开发Web应用的必备技能。此外,学习如何使用PHP连接和操作数据库,如使用PDO(PHP Data Objects)或mysqli扩展,是实现动态功能的基础。 在Web ...

    FastCGI SDK

    总结来说,FastCGI SDK是一个强大的工具集,它为各种编程语言提供了构建高效Web应用的支持。无论你是C、C++、Perl还是Java开发者,都可以利用这个SDK轻松地参与到FastCGI应用的开发中,提升你的Web服务性能。

    node-fastcgi:使用node.js创建FastCGI应用程序

    它可用于构建FastCGI应用程序或将现有的节点应用程序转换为FastCGI。 该实现完全符合。 例 var fcgi = require ( 'node-fastcgi' ) ; fcgi . createServer ( function ( req , res ) { if ( req . method === '...

    Fastcgi学习总结(C/C++语言版)

    总的来说,FastCGI通过优化CGI的运行机制,提高了Web服务的性能和可扩展性,尤其对于C/C++开发者,提供了编写高效Web应用程序的途径。尽管现代Web开发中还有其他如PHP-FPM、WSGI等接口,但FastCGI仍然在某些场景下...

    Web应用安全:Web应用服务器.pptx

    Web应用安全是一个重要的议题,尤其是随着互联网的普及和数字化转型的加速,Web应用已经成为企业和服务提供商的核心组成部分。Web应用服务器是支撑这些应用的关键基础设施,它们不仅处理HTTP协议,还负责处理动态...

    Java的FastCGI网关 jFastCGI

    在Web开发中,FastCGI(Fast Common Gateway Interface)是一种常用于提高动态网站性能的技术,它允许Web服务器与后端应用程序进行高效通信。jFastCGI是Java平台上的一个实现,它为Java开发者提供了使用FastCGI协议...

    java源码:Java的FastCGI网关 jFastCGI.rar

    在Java世界中,FastCGI网关的作用是接收来自Web服务器的FastCGI请求,将其转化为Java可以理解的格式,然后调用Java应用程序来处理这些请求,并将结果返回给Web服务器。jFastCGI就是这样一个实现,它使得Java开发者...

    Pulma:Pulma-用于快速开发基于Perl的FastCGI Web应用程序的框架

    Pulma是一款专为Perl编程语言设计的Web应用程序框架,它致力于简化基于FastCGI的Web应用开发流程,提供高效、快速的开发环境。FastCGI(Fast Common Gateway Interface)是一种常驻型的CGI协议,能够显著提高Web...

    基于Java的实例源码-的FastCGI网关 jFastCGI.zip

    4. **应用开发**:开发者编写Java类,实现`FastCGIServer`接口,处理接收到的`Request`对象并生成`Response`。然后,使用jFastCGI提供的工具启动这个Java应用程序,作为FastCGI服务器运行。 **源码学习要点** 1. *...

    FastCGI支持库

    FastCGI(Fast Common Gateway Interface)是一种用于提高Web服务器性能的技术,它允许Web服务器与外部应用程序进行长时间连接,而...通过理解和利用FastCGI,开发者可以构建出能够处理大量并发请求的高性能Web应用。

    基于Python的Web应用程序的Web服务器比较.md

    # 基于Python的Web应用程序的Web服务器比较 ## 引言 本文将深入探讨Python Web服务器领域内的几个核心概念及其发展历程,并着重对比不同类型的Web服务器如何支持Python Web应用程序。我们将从Python Web服务器网关...

    fastcgi头文件和库

    标题中的“fastcgi头文件和库”指的是FastCGI接口的开发资源,这通常包括了C语言编程中使用的头文件(header files)和库文件(library files)。...了解并熟练运用这些资源对于开发高性能的Web应用程序至关重要。

    fastcgi中文手册.pdf

    《FastCGI中文手册》是IT领域中关于Web服务器与应用程序接口的重要参考资料,它详细介绍了FastCGI协议的原理、实现以及应用。FastCGI是一种用于提高动态内容生成速度的技术,它通过持久连接来减少每次请求时的启动和...

    fastcgi-2.4.0安装包

    FastCGI(Fast Common Gateway Interface)是一种用于提高Web服务器性能的技术,它允许Web服务器与外部应用程序(如PHP、Perl或Python解释器)进行快速通信,而不是通过传统的CGI接口。FastCGI的主要优点是它可以...

Global site tag (gtag.js) - Google Analytics