嵌入式网络编程理念
几年前,网络编程起始于公共网关接口(Common Gateway Interface)简称CGI。C
GI的基本概念如下:
当一个用户发出一个CGI请求时,URL将加入一些信息让服务器将其按照CGI请求进行
处理。URL加入的信息形式可能如下:
用户请求的CGI一般在/cgi-bin/ 子目录:http://www.somewhere.com/cgi-bin/某
个CGI程序
网络服务器的配置可能会自动将某些文件的扩展名识别为可以执行的CGI程序:htt
p://www.erehwon.org/gosearch.py .py 通常被理解为Python程序,这是另外一种
很流行的网络编程语言。
文件的扩展名可能直接采用CGI作为扩展名:http://www.xyz.net/dosomething.cg
i
在这些情况中,网络服务器将用户请求交给URL指定的程序进行处理,并提供相应的
信息:通常是环境变量和标准输入(STDIN)。
然后程序开始运行,生成子进程并生成相应的信息,然后将其发送给标准输出(STD
OUT),通常程序会生成一个尽可能简短的HTTP头信息,作为其输出的一部分。
网络服务器将“捕捉”到的捕捉输出流发通过网络送给用户。用户的浏览器根据HT
TP头将其进行翻译,其结果通常是HTML文本,但是CGI程序也可以很容易地生成字节
流最后将其还原为JPEG图象或RealAudio节目。
标准的简单C程序如下:
#include <stdio.h>
int main () {
print("Hello, world!n");
}
我可以很容易地将其转化成CGI程序,只需加入一个HTTP头。
#include <stdio.h>
int main () {
print("Content-type: text/plainnn");
print("Hello, world!n");
}
下面所需作的只是编译代码,将编译后的二进制文件放在我的网络目录中适当的位
置。
CGI在 is still used quite a bit in the Web world互联网世界的应用很广泛,
但是对它也有很多不满意之处。
生成子进程是一个相当复杂的工作,耗费很多时间和内存,许多访问率相当高的站
点的开发人员常因为由此造成的速度问题抱怨不已。
网络服务器包含很多信息,而不只是环境变量和标准输入(STDIN)。有时候如果网
络程序能够访问这些资料将会带来许多便利。
传统的编程对于互联网来说都显得过于 分着 大,你最需要的其实就是一个能代替
你编写HTML的一个智能程序,所以,为什么要巴程序编得象计算机的代码呢?为什
么不能使它更向HTML本身?
编写互联网应用程序最现代的方法产生于最近的几年。这些编程方法起源于基于用
户端的HTML,或者叫.shtml,企概念强大之处在于将编程代码嵌入HTML文件。一些
比较流行的例子如下:
Active Server Pages (.asp文件), 这种程序应用于微软的IIS网络服务器。ASP文
件可以用几种比特的脚本编写引擎例如VBScript, JavaScript,和PerlScript启动。
Allaire Cold Fusion,这是一种非常方便的商用互联网开发环境。尽管它最初只能
用于Windows NT,但后来它也开发出了适用于UNIX的版本。
Meta-HTML, 这种"免费软件"适用于UNIX 系统,它支持ODBC以及本地化的mSQL接口,
它可以提供用于Netscape和Apache网络服务器的插件软件。
本文中我不具体谈这些工具,但我打算谈一下Ralf Engelschall的ePerl,这种应用
程序使你能将Perl 源代码嵌入到文本文件中。它还集成了mod_perl/Apache,这些
事项以前我们需要在Apache的设置中完成。mod_perl/Apache 的集成强调速度及解
决CGI编程中对服务器-内程序访问的失败,而ePerl则处理标准编程语言在生成HT
ML时的 分 和罗嗦。