[骇人听闻]在积水潭第一次看到CSP

jackxiang 2006-11-18 14:45 | |

本人前些天感冒了,到积水潭去看病偶尔看到他们的计算机系统用的是csp,以前听说过,现在终于找到了相关文章,好象也就是asp$php$jsp  一样的,但不同在他原理上可能导致它要快一些:
这个CSP不是CSP(Commercial Service Provider)即商业服务提供商,CSP不是Client/Server Program,也不是Chinese Super Programer,更不是CS Player,那么什么是CSP呢?在说明什么是CSP之前,先说明什么是“骇人听闻”,一说到“骇人听闻”,你可能就想到了是什么坏事吧,其实不一定,应该说就是前所未闻的事说严重一点就是“骇人听闻”了。在每一本关于asp, php, jsp, asp.net书上都告诉你,做网站不可能使用C++,真的吗?这个CSP偏偏就是C++ Server Pages的简称,和asp、jsp类似,属于一种Web应用扩充的脚本语言,可以用来编写网页代码。其对应的文件名是".CSP"。

(下面的文字部分来源于《CSP开发者手册》)

   CSP使用C++语言作为脚本的语言,和asp、jsp、php等不同的是,CSP不是解释执行的脚本,而是真正编译后执行的脚本。因此和其它脚本语言相比较,CSP执行速度和效率都要高一些,由于使用标准的动态连接思想,因此CSP可以被用户非常方便的扩充,对于复杂的或者保密要求高的应用,完全可以通过CSP扩展来完全隐藏实现的细节。
   CSP是经过编译执行的代码,用户需要作的是维护CSP的源码,而编译过程是由CSP内置的编译器来完成,称为现场编译(Field Compile)。CSP脚本的缺点是需要保存编译后的二进制代码,以提高再次执行的速度,因此CSP作的网站需要比其它脚本语言占用更多的磁盘空间。
   CSP实际上就是一种CGISpawn,关于CGISpawn的详细介绍可以参考MSDN的相关内容。

---------------------------------------------------------------------------

antigloss 插嘴说:
   再往下看之前,请您先了解一下如何配置 CSP 服务器。先安装 IIS(5.0 以上版本)或者 Apache(1.3.x 以上版本),然后安装 C++ Server Pages (CSP) Engine。至此,一台 CSP 服务器就配置成功了。

CSP Engine 下载地址:http://stdcpp.cn/html/8/17/0512/98.htm

---------------------------------------------------------------------------

   好了,回到主题上来。现在的首要任务是:如何使用CSP写页面呢?

   在场的各位会写ASP页面的有多少人呢?

   嗯,好,还挺多的嘛~~~~那我就继续了。

   大家都知道在ASP中写代码是要在 <% 与 %> 之间的部分写的,CSP也是如此。不过少许的差别还是有的。这个差别体现在:

   1.CSP对大小写敏感。因为这是C++啊,会C/C++语言的人都知道。

   2.在CSP的体系中,有一个特殊的代码段标志:<%! %>。

   仔细看,没错,就是写在 <%! %> 之间,在第一个%后面有一个!,这是作为全局变量和自定义函数代码块的标志,声明结构体也要在这里。在一个CSP页面中,所有的自定义函数的实现一定要放在<%! %>之间。而其它的代码则可以像ASP代码一样在页面的各处随意穿插安放。只要在<% %>中就行。

在了解这些细节之后,我们就可以开始写页面了。

我先给出一个简单的例子,然后再仔细给大家分析一下:


<%
   int i=0;
   char s[50];
   for ( i = 0; i < 10; ++i )
   {
       sprintf(s,"
%d : 欢迎来到CSP的世界!",i);
       Response.Write(s);
   }
%>

It is over!




访问这个CSP页面,你会得到一个显示如下内容的页面:

0 : 欢迎来到CSP的世界!
1 : 欢迎来到CSP的世界!
2 : 欢迎来到CSP的世界!
3 : 欢迎来到CSP的世界!
4 : 欢迎来到CSP的世界!
5 : 欢迎来到CSP的世界!
6 : 欢迎来到CSP的世界!
7 : 欢迎来到CSP的世界!
8 : 欢迎来到CSP的世界!
9 : 欢迎来到CSP的世界!

It is over!

   大家都学过C语言吧,看看上面的语句(不是吧?你C语言挂了?!)。变量声明与循环我就不多讲了,有两句得说一下:

   1.sprintf(s,"
%d : 欢迎来到CSP的世界!",i);

这句是把我们要显示的字符串复制到缓冲区 s 中去。实现这个功能的函数是:sprintf 。是不是觉得和C语言中的 printf 很像呢?没错,它实际上与printf就是同一族的(其它的还有wsprintf , fprintf 等等。这里先不做讨论。)printf的任务是把字符串输出到屏幕,而sprintf则是把字符串输出到内存中的一块区域,以供别的代码使用。它的的用法和printf类似,都是要通过%d等一些占位符来实现格式化输出。当页面执行完这一句之后,就把“0 : 欢迎来到CSP的世界!”这样的字符串放到数组 s 中了。

   2.Response.Write(s);

这一句对于经常进行ASP编程的同学应该相当熟悉吧。它的主要任务就是把刚才我们得到的字符串从内存中取出来,再写入服务器的响应,进而显示在你的浏览器上。如果你已经能够正确地显示出结果,那么恭喜你,你已经入门了!

下面介绍一下在CSP中可以使用的数据类型以及可以直接使用的基本类,还有很实用的功能类。

char
wchar_t
std::string
std::wstring
int
unsigned int
__int64
unsigned __int64
long
unsigned long
short
unsigned short
char
unsigned char
bool
double
float

以上类型支持 const 关键字。

以下是基本类:
CSPDate
CSPTime
CSPDateTime
CSPVariant
CSPBuffer
CSPDate
CSPException
CSPFile
CSPString
CSPVarArray
CSPWString

这三个类是对数据库操作的封装:
CSPODBCConnection
CSPODBCField
CSPODBCRecordset

以下是功能类:
CSPImpersonation
CSPMail
CSPMime
CSPMimePart
CSPTemplate
CSPThread
CSPThreadLock
CSPThreadLockHandler
CSPTimer
CSPTxContext
CSPTxObject

下面这几个是模板类(这确实让我很惊奇):
CSPPool
CSPPool::ObjectPtr
CSPArray
CSPPtr

写了这么多,好累啊。也不知道有人看没???对于那个为什么会有关于<%! %>的规定的原因,我改天会仔细阐述的。但愿这个“改天”不会太长,呵呵。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/342/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]