首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web开发 >

怎么实现一种简单的、全新的服务器页面脚本?

2012-03-04 
如何实现一种简单的、全新的服务器页面脚本? - Web 开发 / 其他缘起:KSP是什么?KSP是Koodoo语言服务器页面

如何实现一种简单的、全新的服务器页面脚本? - Web 开发 / 其他
缘起:   KSP是什么?
KSP是Koodoo语言服务器页面脚本(Koodoo   Server   Page)的简称,我们知道Koodoo语言是运行在蓝星际语音平台上,用来开发语音IVR或呼叫中心流程的高级脚本语言,直接被语音平台加载运行在线路上。而KSP却是把Koodoo语言嵌入在HTML页面上,就像ASP、JSP或PHP一样,可以用来实现基于Web应用的业务逻辑。
我们知道,运行ASP需要IIS,PHP需要Apache,JSP则需要Java的应用服务器,那么运行KSP的web服务器是什么?
其实就是蓝星际语音平台,当然,还需要在虚拟线路上加载处理页面的脚本,具体在后面“怎么部署”详细讲述。
这是一段最简单的KSP页面(文件名Hello.ksp):
  <html>
  <head>
      <title> KSP   测试 </title>
  </head>
  <body>
  <p> Hello   World </p>
  <%
      Print( " <p> Hello,   KSP! </p> ");

      //   下面显示当前时间
      s   =   " ";
      GetDateStr( " <p> 格林维茨时间:   %a,   %d   %b   %Y   %T   GMT </p> ",   NULL,   true,   s);
      Print(s);     //   将变量s输出到浏览器页面
  %>
  </body>
  </html>  

如果运行起了语音平台后,在浏览器的地址栏输入:   http://localhost:8081/hello.ksp,   将会显示:
  Hello   World
  Hello,   KSP!
  格林维茨时间:   Tue,   21   Aug   2007   09:06:21   GMT

这看起来多么简单,和其它脚本语言一样,KSP只是在普通的HTML或XHTML文件中用 <%   ...   %> 括起来的部分,Print(s)函数会将变量输出到浏览器页面上。


服务器脚本够多了,为什么还要KSP?
web服务器的脚本很多,如PHP就很好,ASP.NET也不错,JSP甚至现在流行的RoR,都有很多成熟的应用。
但KSP比他们简单,简单就是最大的优势。你不用学习和理解面向对象的概念,语法上也很简单,比如变量不用像PHP那样要在前面弄个美元符号,字符串拼接也直接用加号。此外很多朋友已经熟悉Koodoo语言了,驾轻就熟,做一些简单的业务开发没必要再用其他的工具。

KSP就运行在蓝星际语音平台上面,只是多配置几条虚拟线路来跑Web服务器而已,和语音平台紧密集成,你可以通过浏览器来直接查询甚至控制语音平台。从某种意义上,相当于多了一个和语音平台打交道的接口。

因为KSP基于Koodoo语言,所以继承了Koodoo语言的灵活性,比如,可以利用文本转语音的函数进行实时转换并下载,可以实时传真转换并发送传真,可以利用DLL来进行短信收发,可以给其它线路发送消息等等。


怎么部署?
点击下面的链接下载:最新的蓝星际语音平台之开发平台   或   最新的蓝星际语音平台之运行平台
点击下面的链接下载:web服务器脚本

服务器脚本下载到本地目录后,按目录解包,将语音平台(开发平台或运行平台)程序拷贝到该工作目录。
1.如果你有运行平台许可,则简单配置好BsTelRun.cfg文件后,直接运行运行平台程序就可以了。
2.如果用开发平台来进行测试,则运行开发平台程序,选择HttpServer.bss脚本,编译,运行,为了加快速度,
去掉界面上的 "动态刷新 "。
注意,运行平台采用多线程方式响应浏览器的请求,有更好的性能;开发平台则采用堵塞方式运行,完成一个请求后才能
响应下一个请求,但你一个人测试就没有问题。
工作目录下有个web.ini文件,是个简单的配置文件,只有几行:
  const   WEB_PORT   =   8081;     //   本web服务器侦听的端口号,   为了不和标准web服务器的80端口冲突,设置为8081
  const   BASE_HTM_PATH   =   "./Ksp/ ";     //   首页路径,.htm或.ksp文件放在这个目录下面,可以有子目录
  const   TEMP_FILE_PATH   =   "tmp/ ";       //   临时文件路径,   必须预先创建
运行起来后,就像前面所说的,在浏览器的地址栏上输入http://localhost:8081/hello.ksp,就可以看到结果了。


解说一下:   用一百多行Koodoo代码如何实现一个功能强大的Web服务器?
其实要做一个web服务器比想像的简单,用Koodoo语言来实现就更简单了。
你可以用记事本打开HttpServer.bss脚本,   运行平台使用HttpServerCtrl.bss和HttpServerProc.bss,前者是主控脚本,运行在一条虚拟线路上,接受浏览器的Http连接;后者分解请求并进行处理然后发送Http响应,可配置在多条虚拟线路上运行。

脚本很简单,总共只有将近200行代码:
  1.在脚本的开始,用系统函数HttpServerOpen()侦听WEB_PORT端口;
  2.用系统函数HttpServerRecv()函数接收浏览器的请求;
  3.调用自定义函数ProceData()处理请求的数据,在函数内会调用系统函数HttpServerSend()给浏览器发送响应数据;
  4.循环2,3
自定义函数ProceData()是数据处理的关键:
  1.分解请求头,取得Get、Post、Cookie等数据;
  2.如果不是.ksp脚本,如普通的.htm或jpg图片等,直接打开文件发送给浏览器;
  3.如果是.ksp脚本请求,则调用KspToBss()系统函数,将Ksp脚本分解为标准Koodoo语言的Bss脚本,
      然后调用系统函数RunBss()执行之;   将执行脚本所生成的htm文件发送给浏览器。
这一切,都在HttpServer.bss脚本中写的明明白白,你可以自己阅读或者修改它,来适应你自己的特殊需求。你可以定制一个Web服务器,这一切都是透明的,不是吗?


怎么用KSP?
KSP就是嵌入式的Koodoo语言,比Asp和PHP都要简单,更不用说Jsp了。
浏览器可以用Get参数或Post方法给KSP传递数据,这些存储在全局数组里面:
  _GET           //   用Get方法发送给服务器的数据


  _POST         //   用Post方法发送给服务器的数据
  _COOKIE     //   包含在客户计算机上的Cookie中的数据
这些数组可以用类似for(   name   in   _POST   )的方法遍历,也可以用下标直接访问,非常方便。
关于Cookie:
Cookie可以保存用户的信息,首先要设置它,KSP没有提供系统函数,你可以用下面的自定义函数来完成:
_headStr   =   " ";   //   定义一个全局变量
//   自定义函数,设置一个Cookie
//   参数:   name   -   cookie名字
//               val   -   coocie的值
//               expires   -   有效时间,如传入NULL,表示不指定,关闭浏览器后自动失效
//               path   -   coockie的有效范围
function   SetCookie(name,   val,   expires,   path)
{
    vStr   =   " ";
    StrToUnicode(val,   3,   vStr);
    expStr   =   " ";
    if(   expires!=NULL   )
          GetDateStr( "expires=%a,   %d-%b-%Y   %T   GMT;   ",   expires,   true,   expStr);

    pStr   =   " ";
    if(   path!=NULL   ||   path!= " "   )
          pStr   =   "path= "+path;
 
    _headStr   =   _headStr   +   "Set-Cookie:   "   +   name   +   "= "   +   vStr   +   ";   "   +   expStr   +   "\r\n ";
    SetShareMem(_lineNo,   "_RawHead ",   _headStr);
}

    //   试验一下
    t   =   Time();     //   取得当前时间
    SetCookie( "user_id ",   "123456 ",   t+3600,   "/ ");           //   有效期为一个小时
    SetCookie( "user_pwd ",   "189823 ",   t+3600*24,   "/ ");   //   有效期为一天
    SetCookie( "user_name ",   "bluesen ",   NULL,   "/ ");   //   有效期为本浏览器

在下一个页面中,则可以这样来取得Cookie数据:
    userId   =   _COOKIE[ "user_id "];     //   这个值是上次设置的 "123456 "
    userPwd   =   _COOKIE[ "user_pwd "];     //   这个值是上次设置的 "189823 "
    ...   然后到数据库进行身份校验。对_GET和_POST数据的处理是类似的。
你如果熟悉PHP,会发现KSP对Cookie的处理和PHP如出一辙,相当简单。

其实,KSP只需要处理业务逻辑,比如存取数据库,调用外部Dll函数,记录服务器日志,等等。界面的表现部分通常用XHTML+CSS来完成。足以简单而清晰地构建Web业务系统,尤其是和语音系统结合的web业务处理系统。

Trackback:   http://tb.blog.csdn.net/TrackBack.aspx?PostId=1753431



[解决办法]
> > web服务器的脚本很多,如PHP就很好,ASP.NET也不错,JSP甚至现在流行的RoR,
> > 都有很多成熟的应用。
> > 但KSP比他们简单,简单就是最大的优势。你不用学习和理解面向对象的概念,
> > 语法上也很简单,比如变量不用像PHP那样要在前面弄个美元符号,字符串拼接也直接用加号。
> > 此外很多朋友已经熟悉Koodoo语言了,驾轻就熟,
> > 做一些简单的业务开发没必要再用其他的工具。

我没听说过koodoo语言。至于说它简单,一点也没看出来啊……

[解决办法]
很好,因此转移到Web开发的版块里, 相信这里的朋友会更喜欢:)

热点排行