免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: newzy
打印 上一主题 下一主题

[Web] [原创]大家进来看看, 用 C 写的 CGI 留言板程序 (CSP 源程序分析) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-03-15 15:05 |只看该作者
原帖由 北京野狼 于 2006-3-15 13:20 发表
总之csp也许在特殊情况有的意义。

但是我看开发效率不如直接c+模板方式。 入门难度又远超过php等。至于速度效率,我看也不怎么样。


"入门难度又远超过php" 不是太赞同
呵呵, 如果你会基本的 C 程序的话, CSP 入门怎么可能比 PHP 难.  既然会 PHP, 那就把用PHP的语句换成 C 就成了(并将 <?php ?> 换成 <% %>, 如下面给个例子输出 "Hello world"例子:

CSP 的中间文件是 C, 最后编译生成的可执行文件(即CGI), 如果怀疑 CSP的效率就是在怀疑 C 写 CGI 程序的执行效率啦. 目前, C 仍是高效率要求下的最佳选择.

"但是我看开发效率不如直接c+模板方式", 能给个例子对比说明下吗?

如有不妥, 请指正.


  1. <html>
  2. <body>
  3. <% print ("hello world<BR>"); %>
  4. <% echo ("hello world<BR>"); %>
  5. 当然也可写成:
  6. <% ="hello world<BR>" %>
  7. <body>
  8. </html>
复制代码

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2006-03-15 15:29 |只看该作者

论坛徽章:
0
13 [报告]
发表于 2006-03-15 16:11 |只看该作者
原帖由 北京野狼 于 2006-3-15 14:31 发表
...
路由器/交换机/网关这些设上装个perl解释器不占用多少空间, 而且这些设备基本都有perl解释器。

很多PDA不是用 ...


像上面所列的嵌入式设备, 一般地特点是: 内存/外存储器小, CPU速度慢, 实时处理要求高. 比如通常一个小路由器 8M/16M RAM, 8M/16M Flash RAM, CPU 100MHZ; 操作系统除了选择"功能经过了反复裁减的Linux", 还有 VxWorks, eCos、uC/OS-II ... 不见得在上面都能运行 PERL 解释器; 还有 WEB 服务器, Apache 可能不再是嵌入式上的有益选择, 那么像 GoAhead, mini-httpd, ...许多WEB 服务器, 上也不尽都能很好地支持 perl.

诸上等原因, 仍限制着嵌入式领域 WEB 的主要开发还是选择基于 C 直接开发 CGI 程序.

另外, PDA上的 GUI及其应用是用多用JAVA来开发的, 不过下层程序如驱动,通信协议等还是用C的.

论坛徽章:
0
14 [报告]
发表于 2006-03-15 16:13 |只看该作者
原帖由 北京野狼 于 2006-3-15 14:31 发表
...
但是既然几乎跟 JSP/PHP 的开发过程一样,那还要csp干吗?



上面已提到嵌入式领域选择 CSP 是因为嵌入式的特点决定的.
在服务级的 WEB 应用选择CSP 则是现有开发工具的有益补充. 就是说并不强求你一定选择CSP进行开发, 而是CSP及其配套开发工具eybuild的以下特点, 使得我们选择 CSP 开发更有益:

1. 执行代码高效率的追求
C 是高效率性是毋庸质疑的,  CSP 是对直接用 C 开发的CGI 的一种包装, 所以天然地继承了 C 语言的高效性性. 喜欢用 C 开发的程序员, CSP是最有吸引力的选择.

2. 高效的集成技术:
通过集成技术, 你可以把许多CSP/HTML页面集成生成到一个CGI中(包括图片, CSS 及其它静态文件). 甚至, 你可以将一个小型的网站或应用生成到一个CGI文件中, 这使得最的可执行脚本文件管理变得异常简单. 这一点在嵌入式设备上特别有用, 因为它们中的很多急乎没有外存(如Flash ROM). eybuild 为最后生成的 CGI 程序在其内部建立了虚拟目录, 页面间的引用几乎跟真实文件系统一样.

更多CSP的特点, 请看下 《eybuild 中文手册》中的“1.2 为什么要选择eyBuild开发Web站点 ”一节,
见: http://www.eybuild.com/develop/doc/manual/eyBuild_manual_ch.pdf

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2006-03-15 17:04 |只看该作者
如果非使用c开发web  的话,那就直接写,没必要使用csp。

我做过7年用c写web。不得已也使用php,jsp最不喜欢的就是在html页面里面写程序。

我也开发过防火墙,老实说国内的防火墙70%的工作就是做web配置,大多使用bsd,而且根本就不是嵌入

式,就是一台主机,连硬盘都有。

论坛徽章:
0
16 [报告]
发表于 2006-03-16 10:30 |只看该作者
原帖由 北京野狼 于 2006-3-15 17:04 发表
如果非使用c开发web  的话,那就直接写,没必要使用csp。

我做过7年用c写web。不得已也使用php,jsp最不喜欢的就是在html页面里面写程序。

我也开发过防火墙,老实说国内的防火墙70%的工作就是做web配置,大 ...


呵呵 如果有人能够步行一日千里, 那么他出门时几乎没有必要乘任何交通工具.
如果有人喜欢并能在很短的时间内以超强的能力直接用 C 写完很多重复/繁琐CGI 页面处理, 那他也不必要借助任何工具, 包括 PHP/JSP.

之所以现在 ASP/PHP/JSP 能取代直接用 C 写 CGI, JSP 能取代 java Servlet的方式写 CGI. 是因为它们都在CGI基础上做了抽象, 简化了开发难度,复杂度等. 跟大家都知道 JSP 最终还是翻译成 java Servlet 的 CGI程序一样, CSP 最终也被翻译成了 C 的 CGI程序.  CSP 不是在简单的炒作概念, 它的真正目的是为了简化用 C 开发 CGI程序的难度和复杂度, 以提高程序开发速度.

我手头的一项开发工作(VDSL2 局端+用户端设备)上包括70余个配置页面, 如果一个个的 printf 出来还是有点工作量的吧, 还要手工转换其中的 \"\'\n\r 等符号, 对动态输出页面的流程控制. 如果没有一定的CGI开发功底, 其难度和工作量还是很可观的. 用CSP 则在大简化了这个过程:
(1) 用很短的时间从已有产品中截取 HTML 页面模板, 就是从浏览器文件另存为啦
(2) 修改好页面间的连接关系
(3) 与各下层模块商定 API接口, 即定义中间层接口 (在 HTML中调用的 下层函数, HTML中尽量少的加入复杂处理, 就像现在的 JSP 一样,  为了更好地使 C 和 HTML分离.)
(4) 在 HTML中依照 CSP 语法插入 C 语句语句. 中间层程序员编写 C 文件的 API 函数(调用 eybuild提供的CGI库), 下层模块实现功能处理.
(6) 将 CSP 文件/静态的页面/图片文件/CSS文件等用 eybuild 的翻译成 C 文件
(7) 将 *_csp_maplist.c , *_rom_maplist.c, 其它 .C 文件, eybuild 库一起编译生成可执行的 CGI文件.

我用 C 做 CGI 时间比你少些只有5年啦, 有不妥之处请多指教.
也移植过BSD 的防火墙 IP Filter 到 VxWorks以支持 NAT/包过滤等, 这个防火墙还是不错地. 直接在 BSD 下也用过. 很多公司都是直接在 PC上装个BSD来用这个防火墙.
haolee 该用户已被删除
17 [报告]
发表于 2006-03-16 23:44 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2006-03-17 09:48 |只看该作者
newzy 兄弟说的也对,只是我认为一个程序员能用CSP开发, 那就没什么理由不能用c直接开发web

仅仅是需要一套web库而已, 比如hash,cgi处理等

论坛徽章:
0
19 [报告]
发表于 2006-03-17 16:51 |只看该作者
实在不理解这种语言有什么意义

论坛徽章:
0
20 [报告]
发表于 2006-03-17 17:22 |只看该作者
原帖由 jeffyan 于 2006-3-17 16:51 发表
实在不理解这种语言有什么意义


应该说 CSP (C Language Service Page) 不是一种语言,  它是是联合 C 和 HTML/XML 等模板文件中快速编写 CGI 程序的一种方法. 即 像 ASP/JSP/PHP 的语法一样. 将 C 语句插入到 HTML/XML 模板文件, 以简化对 HTML 输出及文件结构控制等重复工作.

CSP 文件与其相关的图片/CSS文件都可被转换成 C 文件, 最终再编译生成可执行的 CGI 文件.
同时 CSP 的开发环境还提供了 CGI 库, 以快速编写必要的 C 程序.

就像用高级语言而很少用直接用汇编和机器语言道理一样,
汇编机器语言啥都能做为什么大家还用 C?!

[ 本帖最后由 newzy 于 2006-3-17 17:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP