吵吵   2019-04-16  阅读:1,426

Cache数据库,这个已经在服务器端实现了一个Object Script脚本语言的数据库,这个已经扩充了多个系统操作级API的万能数据库,如果不能来做web server,那是绝对不可能的。

还记得我们第一次开始做网站开发的时候,弄懂了HTML CSS等内容还是只能做静态的页面,后面微软出了ASP(Active Server Pages),这样我们就能够在服务器端开始写逻辑控制的代码了,静态网页也就变成动态网站了。

有了ASP后,我们用ASP去连接ACCESS数据库,实现数据库的读取和存储。对于Cache数据来来说,天生的和数据操作结合紧密的Object Script,就可以大展身手,实现诸多的业务和逻辑了。类似于ASP后缀的动态页面,Cache数据库的动态页面叫做CSP,Cache Server Page。

CSP的两种实现方式

类比ASP或者php等脚本语言,我们明显可以想到的第一种CSP的创建方式是混合了ObjectScript的html页面,只不过页面文件名后缀是CSP。

在 Caché Studio的菜单中选择File > New > CSP File > Caché Server Page.

那么我们就创建了一个CSP页面了,我们可以写上很多的html代码,html代码是直接输出的。

类似asp中用%来识别脚本语言,PHP中用?来识别脚本语言,CSP中用Script标签来识别脚本语言,例子如下:

html
body
b Hello, World! b
script language=”Cache” runat=”server”
// this code is executed on the server
Write “

    “,!
    For i = 1:1:10 {
    Write “

  • This is item “, i,!
    }
    Write “

“,!
/script
/body
/html

所以这里要小心的是如果是用JavaScript的话要注意区分。

介绍完了第一种模式之后,我们得介绍另外一种实现CSP的模式。

当你把CSP当动态页面来看的时候,别忘了Cache数据库是一个面向对象的数据库,或者说是一个用类构造得比较彻底的数据库。

因此CSP的另外一种模式就是创建一个继承自%CSP.Page 的类,因此文件的后缀名就不是CSP而是cls了。例子如下:

Class Test.Hello Extends %CSP.Page [ ProcedureBlock ]
{
ClassMethod OnPage() As %Status
{
&html<


>
;To do...
&html<
>
Quit $$$OK
}
}

等于是当我们访问/Test.Hello.cls的时候,Cache就会默认的调用我们重新实现的OnPage函数,来实现HTML的输出。

CSP等于是我们在HTML里面写ObjectScript,而%CSP.Page等于是我们在ObjectScript中去输出HTML内容,哪种方式比较好呢?各有千秋。

POST和GET实现

聊完了如何建立CSP之后,我们要聊一聊怎么实现业务逻辑了,对于HTTP协议来说,我们都很清楚,一个是GET方式,一个POST方式,但是不管什么方式,都是终端来访问服务器获取数据的。

当我们访问CSP页面之后,Cache就把我们传过来的数据放到%request类里面了,于是我们的测试例子如下:

script language=”Cache” runat=”server”
// this code is executed on the server

I $D(%request.Data(“id”,1))
{
s a=%request.Data(“id”,1)
w a
}
script

上述代码的意思是我们通过%request类把传入参数的id展现出来,从而我们实现了逻辑和业务的控制。

值得一提的是,如果你没用用$d来判断%request里面时候有内容的时候,服务器会报一个蓝色的错误的页面,这个页面好家伙,什么内容都显示出来了!

我们在%CSP里面可以看到更多的类,包括%CSP.Session等这些常用的功能,如图:

Zen框架

类似于当年ASP.NET搞的那个webform的网站开发,把开发网页变成和开发桌面应用一样拖拖控件就可以了,Cache呢,也不甘落后的搞了一个框架,就叫做Zen。

实际上呢,在网页的前端展示的还是HTML的元素,然后通过AJAX把事件映射到服务器端的函数里面去,这是其基本的原理。

XData Contents [XMLNamespace=”http://www.intersystems.com/zen”]
{
page xmlns=”http://www.intersystems.com/zen” title=””
html id=”title”>Zen Exercise Results /html
vgroup width=”100%”
button id=”myButton” caption=”Press Me”
vgroup
page
}

上面这个例子就是一个按钮点击。

当然,在WebAPI盛行的现在,早就没有人这么干了,前端和后端已经完全的分离,研究这个已经没有啥意义了。

不知道新版的Cache已经支持webAPI没有?

注:为能够正常显示,代码注释掉了尖括号。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

2条回应:“Cache数据库的网站开发CSP”

  1. 新闻头条说道:

    文章不错支持一下吧

  2. 头条说道:

    文章不错支持一下吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注