`
deepfuture
  • 浏览: 4340898 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79516
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68575
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101715
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281660
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14651
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65835
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31404
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45311
社区版块
存档分类
最新评论

基于C语言的脚本开发技术-csp

阅读更多

什么是 eybuild

http://www.eybuild.com/develop/index.htm

     eyBuild,是 Easy Build 的简写,它是CSP(C Language Service Page)开发套件的总称。 eyBuild是嵌入式设备上WEB应用的最理想的开发工具,同是也是服务器WEB应用开发最有益的补充,它包括CSP2BIN、WEB2BIN、DONEMAP、eyBuildLib等开发组件。

[中文手册]
什么是 CSP

     CSP是C Language Service Page 的缩写,它是一种基于C语言的脚本开发技术。跟ASP、JSP类似,它们都是CGI(Common Gateway Interface)的一种变种。 我们可以直接在HTML等文件中嵌入任意C语句形成CSP的源文件,然后用CSP2BIN将该文件转换成C语言的源程序。

     用CSP可以像ASP、JSP、PHP等工具一样在HTML文档中自由地嵌入C语言的程序代码。 如果你是个C/C++或JAVA程序员,你不必重新学习任何一种新语言,即可以像高效地开发WEB应用,工作模式跟原来几乎一样。 如果曾经用ASP、JSP、JSP开发过并有一定的C语言基础,你会发现CSP简单就是它们的一种变种。无需太多学习即可用CSP做开发了。

[中文手册]
为什么要选择eyBuild开发Web站点

 

嵌入式设备WEB应用开发的最佳选择
目前嵌入式设备上的WEB应用最主要还是C语言直接开发CGI程序。除在序言中提到了直接用C开发CGI的诸多缺点外, 直接将HTML代码用C语句输出,不能对两都进行有效的分离,将大大降低HTML源程序和C源程序的可读性、维护性; 直接用C语言开发还必须手工对页面输出的流程进行控制,还将大大降低了开发的效率。
eyBuild 提供的CSP翻译工具,将CSP源程序翻译成C语言源程序。开发都只要编辑好HTML页面模板, 然后在适当地方嵌入C语句即可以有效控制页面的输出;上文提到,还可以通过指示指令对输出页面的进行控制。 使得WEB界面的开发和执行控制动作进行了有效的分离。使得嵌入式设备的WEB开发变得高效、有序。
服务器WEB应用开发工具的最有益补充
用eyBuild开发的WEB应用程序可与任意服务器WEB应用进行有效的接合,因为eyBuild开发的WEB应用程序是一个独立的自治单元, 它不依赖于WEB Serever或其它脚本程序。所以你可以在其它任意脚本程序中通过URL发起eyBuild开发程序。 eyBuild最终会将源文件生成C代码,它生成的应用具有极高的执行效率。这样,你就可以用eyBuild来开发所需要的脚本组件,以解决效率的瓶颈。
通用、高效、跨平台性
这是因为:(1)eyBuild会将CSP源文件及其它非程序文件翻译成C语言的源程序,所以CSP天然地继承了C语言的一切特性。 (2)eyBuild库的实现是完全遵循CGI1.1标准,所以你可以在任意操作系统(支持:Windows、Linux、BSD Unix、Free BSD、Sun Solaris、 VxWorks、WinCE、uC/OS-II)上任意遵循CGI1.1标准的WEB服务器(支持Apache,IIS,GoAhead,httpd,mini-httpd ……)下运行最终的CGI程序。
规则简单,易学易用
简单的说CSP就是直接C语句嵌入到HTML页面中,用C语言来响应请求、控制页面的动态输出行为,并通过简单的指令来控制页面的流程。 用翻译器将CSP源文件翻译成C程序的文件。eyBuild还提供了MAP工具,通过它可以非常容易将CSP源程序和其它非程序文件(如图片、静态HTML文件、CSS文件)集成。
模板选择有了更大的灵活性
很幸运,你几乎可以以任意文本文件(如HTML、XML、JS、CSS、TXT)为模板,在其中插入CSP语句。 这一点与其它解释性脚本语言大不相同,这是因为CSP2BIN仅从中卒取CSP语句解析翻译,而视其它的数据为普通文本。 这一特性,给CSP模板的选择大大增加了灵活性。
手册地址

http://www.eybuild.com/develop/doc/manual/eybuild_manual_ch.pdf

 

 

 

什么是 "远程WEB文件管理器"

     "远程WEB文件管理器" 即是通过WEB方式实现对远程服务器上的文件进行管理. 远程WEB文件管理器" 功能上很像FTP, 但它比 FTP 还有很多优势(如, 不必安装专门的图形化 FTP 客户端等). 下列图例简单地演示了, 如何使用"远程WEB文件管理器".
     同时, 使用 eybuild 实现该示例还具有如下优势:

  1. 最终生成的可执行脚本文件只有一个(如本例最终文件 rweb.cgi), 便于管理.
  2. 不依赖WEB服务器, 脚本程序可以直接在任何流行的 WEB Server 上运行, 如 IIS, Apache
  3. 脚本程序是用 C 语言编译而成(中间文件是C程序文件), 执行效率高

     (备注: 本例重在展示 CSP 的功能. 可以根据需要, 对源程序稍做修改以实现更强大的应用功能).

eybuild csp cgi

图 1 浏览远程服务器上的文件

eybuild csp cgi

图 2 从远程服务器上"下载文件"

eybuild csp cgi

图 3 向远程服务器上"上传文件"

图 4 文件上传结果

 

[返回页首 | 返回首页]

下载 [源码|示例]
查看源文件 (基于CSP 实现)

     下面列出的是 "远程WEB文件管理器" 用CSP实现的源程序(节选部分):

     (备注: <% 与 %> 之间的内容为 CSP 语句或 C 程序语句)

 

文件上传(客户端): uploadc.csp <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=GB2312"> <TITLE>eyBuild Demo - Upload Client</TITLE> </HEAD> <BODY> <form method=post action="<% =cgiPrefix(NULL) %>/uploads.csp" ENCTYPE="multipart/form-data"> <h3>选择要上传的文件:</h3>[<A href="<% =cgiPrefix(NULL) %>/list.csp&path=<% =ebUrlEncode(getParameter("path")) %>">返回到目录列表]</A> <P> <table> <tr> <td width=70>文件1: </td> <td><input type="file" name="upload_file1" size=50></td> </tr> <tr> <td>文件2: </td> <td><input type="file" name="upload_file2" size=50></td> </tr> <tr> <td>文件3: </td> <td><input type="file" name="upload_file3" size=50></td> </tr> <tr> <td>上传选项:</td> <td><input type="checkbox" name="force_remove">强制删除已存在的文件</td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>文件上传到:</td> <td><input type="text" name="upload_to_dir" size=50 value=<% =ebUrlDecode(getParameter("path")) %>></td> </tr> <tr> <td>&nbsp;</td> <td>(不指定上传到的路径时, 将使用服务器默认路径)</td> </tr> </table> </P> <input type="submit" name="Sendcmd" value="开始上传文件"> </body> </HTML> 下载文件: download.csp <% @include <undef.h> @include <fcntl.h> @include <io.h> @include <ebdef.h> @ mimeheader = "Content-Type: text/plain\n\n" { char fname[512] = ""; char buff[256] = ""; FILE * fp; int len; /* get filename */ strcpy(fname, ebUrlDecode(getParameter("file"))); if ('\0' == fname[0]) { ebSendError(400, "not find file name"); return ERROR; } /* * set to binary mode */ setmode(fileno(stdout), _O_BINARY); if (NULL == (fp=fopen(fname, "rb"))) { ebSendError(400, "Open file '%s' error.", fname); return ERROR; } /* * output mime header: filename */ ebHeader(ebfp, "Content-Disposition: attachment; filename=%s\n", get_filename(fname)); /* * we must force flush, before output data */ ebBufFlush(ebfp); /* * write data to stdout */ while(!feof(fp) && (len=fread(buff, 1, 255, fp)) > 0) { fwrite(buff, 1, len, stdout); } /* * close file */ fclose(fp); } %>

 

[返回页首 | 返回首页]

[立即下载]
下载可执行CGI(Windows版)

     要下载 远程WEB文件管理器(Windos 版) 的可执行的CGI, 请点击这里: rweb.cgi

     下载完毕后, 将rweb.cgi解压(用winrar或wintar)出来并移动到 CGI 可执行的目录(如: f:/website/cgi-bin/"), 然后就可以从浏览器上测试运行它了, 如输入http://127.0.0.1/cgi-bin/rweb.cgi. 下图展示了如何在IIS下设置虚目录的属性(注意:必须更改红框中的内容)

eybuild csp cgi

图 1 配置 IIS 运行"脚本和可执行文件"

 

在 Apache 的配置中添加如下配置(关于用户访问权限的设置, 请参阅 Apache的相关手册):

ScriptAlias /cgi-bin/ "F:/website/cgi-bin/"

<Directory "F:/website/cgi-bin">
AllowOverride None

Options None
Order allow,deny
Allow from all
</Directory>

 

[返回页首 | 返回首页]

[立即下载]
下载源程序(Windows版)

     要下载 "远程WEB文件管理器 (Windos 版)" 的源程序, 请点击这里: rweb.tar.gz

     下载完毕后, 如果没有安装 eybuild 开发环境, 先下载 最新版 eybuild并这装之. 将 rweb.tar.gz 解压到一个目录, 双击运行 rweb/rweb.bat 以将 rweb/csp中的源文件, 翻译成 C 程序. 最后, 从rweb/rweb 目录用 VC++ 将打开工程, 编译生成 rweb.cgi.

eybuild csp cgi

图 1 用 VC++ 编译生成可执行脚本程序

     CSP 源文件的编辑器, 推荐使用 UtralEdit. 为了让HTML的语法和 CSP的语法区分显示, 可以修改下UtralEdit的配置文件, 方法是: 打开 "高级" 菜单 --> "语法高亮" 选项卡, 选择"打开" 文件 WORDLIST.TXT (一般在UtralEdit的安装目录, 如: C:\Program Files\UltraEdit\WORDFILE.TXT). 在WORDFILE.TXT中查找 "HTML", 找到第一个, 在"File Extensions ="的最后加下 "CSP" 即可. 最终结果类似下面:

/L3"HTML" Nocase Noquote HTML_LANG Block Comment On = <!-- Block Comment Off = --> Block Comment On Alt = <%& Block Comment Off Alt = %> String Chars = "' File Extensions = HTM HTML ASP SHTML HTT HTX JSP CSP

 

eybuild csp cgi

图 1 在 UtralEdit 下编辑 CSP 源程序
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics