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

基于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 源程序
分享到:
评论

相关推荐

    powershell-6.1.0-linux-x64.tar.gz

    PowerShell是一种基于.NET框架的命令行接口,它扩展了传统的命令行shell功能,引入了面向对象的脚本语言和强大的管理工具。在Windows系统中,PowerShell是默认的管理工具,而在Linux上,它是跨平台的,允许Linux和...

    eybuild中文手册

    eybuild是一个开发工具包,用于创建基于C语言的Web应用程序,它允许开发者将C代码嵌入HTML页面中,形成CSP(C Server Pages)文件。这种方式结合了C语言的高性能和传统CGI(Common Gateway Interface)的动态网页...

    基于C++14/17的高性能跨平台HTTP Web应用框架设计源码

    该项目是一个基于C++14/17的高性能跨平台HTTP Web应用框架设计源码,主要使用C++语言开发,同时包含C、Shell、HTML和C语言元素。项目文件总计522个,其中包括210个C++源文件(.cc)、198个头文件(.h)、28个CSP配置文件...

    Go-PHP绑定至Go编程语言(Golang)

    标题 "Go-PHP绑定至Go编程语言(Golang)" 指的是将PHP这门流行的Web开发语言与Go(Golang)编程语言进行交互的技术。Go语言以其高效、并发支持和简洁的语法在系统编程和微服务领域受到广泛关注,而PHP则在Web开发中...

    开源项目-golang-go.zip

    5. **CSP并发模型**:Go语言的并发模型基于 Communicating Sequential Processes (CSP),强调通过消息传递实现并发,这有助于避免数据竞争和其他并发问题。 在压缩包【go-master】中,很可能是包含了Go语言开源项目...

    8、信息学奥赛系列课程之NOI LINUX课程表01.pdf

    - CSP-J - **学习建议:** - **三四年级:** - 学习兴趣的培养。 - 动手能力、模仿能力的提升。 - 思考能力、逻辑思维的训练。 - **五六年级:** - 加强练习,灵活安排学习时间。 - 增加做题时间,每周至少...

    嵌入式动态Web网页实现方法探究

    CSP与页面预处理提高了代码的可读性,但增加了开发复杂度;自定义标签提供了一种轻量级的动态内容插入方式;而AJAX则通过前端技术优化了用户体验与服务器性能。在实际应用中,应根据项目需求、资源限制以及预期目标...

    XSS.zip_XSS_c xss

    在C语言中,虽然它主要用于系统级编程,不直接处理Web应用,但开发Web服务或API时仍可能遇到XSS问题。C程序员需要注意以下几点: 1. **谨慎处理字符串**:在接收和处理用户输入时,确保进行适当的边界检查和转义...

    gopmc-SRD.zip

    【标题】"gopmc-SRD.zip"是一个与Go编程语言相关的压缩文件,可能是某个软件开发资源包或项目代码库的归档。"gopmc"可能是“Go进程管理控制器”(Guessing "Go Process Management Controller")的缩写,而"SRD"可能...

    PHP通用考试成绩查分系统 工资物业费水电费网上查询系统.zip

    该压缩包文件“PHP通用考试成绩查分系统 工资物业费水电费网上查询系统.zip”包含了一个基于PHP开发的在线查询系统,主要用于处理教育领域中的考试成绩查询以及生活服务中的工资、物业费、水电费等费用的网上查询。...

    DB2使用经验积累

    - **SQLSP及CSP的选择**:根据实际需求选择使用SQL存储过程或C语言存储过程,以达到最佳性能。 - **查询的优化(HASH及RR_TO_RS)**:了解和应用不同的查询优化策略,如使用哈希连接或RR_TO_RS等,可以显著提高查询...

    DB2使用经验积累PDF

    - **DRDA(Distributed Relational Database Architecture,分布式关系数据库架构)**:DRDA是IBM开发的一种标准协议,用于实现不同DB2实例之间的数据交换。通过DRDA,DB2可以与其他支持该协议的数据库进行通信。 - **...

    牛新庄:DB2使用经验

    - **SQLSP及CSP的选择**:根据具体情况选择使用SQL存储过程还是C语言存储过程,考虑执行效率等因素。 - **查询的优化(HASH及RR_TO_RS)**:使用合适的查询优化策略,如HASH JOIN或RR_TO_RS,可以显著提高查询速度。 ...

    google的go编程语言安装及配置

    它结合了C语言的速度和Python的易用性,被设计为一种现代化的语言,旨在提高开发效率和程序性能。 **特点概述**: - **语言设计理念**:Go的设计理念是简洁、高效且易于学习,它受到了多种编程语言的影响,包括C、...

    DB2数据库用户手册

    - **SQLSP及CSP的选择**:根据具体需求选择使用SQL存储过程还是C语言存储过程,两者在性能上有一定的差别。 - **查询的优化(HASH及RR_TO_RS)**:通过调整查询策略,比如使用HASH JOIN代替NESTED LOOP JOIN,可以显著...

    google的Go语言编程.pdf

    文档中还隐含了Go语言拥有一个活跃的开发和用户社区,这也是任何一种技术能够持续成长和改进的关键。社区提供了诸多资源,包括文档、讨论组、邮件列表以及问题跟踪系统,这些都是学习和应用Go语言不可或缺的支持。 ...

    DB2数据库使用经验积累

    SQLSP(SQL存储过程)适用于简单的数据处理任务,而CSP(C语言存储过程)更适合处理复杂的逻辑。 ##### 5.4 查询的优化(HASH及RR_TO_RS) 通过选择合适的索引策略和查询方法,可以显著提高查询性能。 ##### 5.5 ...

    outing:爱立信OSS保障团队郊游

    1. **基础概念**:JavaScript是一种解释型、弱类型、基于原型和事件驱动的脚本语言。它的语法受到C语言的影响,但更加灵活。 2. **DOM操作**:Document Object Model(文档对象模型)是JavaScript处理HTML或XML文档...

Global site tag (gtag.js) - Google Analytics