CGI TO ISAPI的转换 BY CJ(30分)

  • 主题发起人 主题发起人 CJ
  • 开始时间 开始时间
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
开始用D4了
 
hi tqz
I know CGIExpert, But how can I translate a CGI program to ISAPI?
 
ISAPI的程序很简单,重要的是思路清楚.既然你的CGI程序
已经成型了,编码很快的.
 
1.千万不要用CGIexpert 我个人认为,cgiexpert提供了一些华而不实的
功能上船容易,到你发现CGIexpert不能满足你的要求而改写程序时
就很痛苦了!,我就经历了一次。其实delphi提供的ISAPI机制比cgiexpert
好//个人观点
2.有了一个CGI改成ISAPI 我的做法是
同时打开两个delphi
Delphi-A 打开原来的CGI程序
Delphi-B 新建一个Isapi的工程
按葫芦化瓢,代码还可以copy很快就可以完工了
3.delphi4.0和Delphi3.0中的关于ISAPI,CGI的部分几乎没有差别
 
没有差别吗?
我看不见得!我可是上了当的!
写过一个网站,有十几个CGI
当初是为了调试方便,可后来
要改成ISAPI时才发现不行了!
举一个小例子:
CGI 中的pageproducer中可以插入<#replace taget>
然后在ActionItem的Onaction事件中触发一个
response.content:=pageproducer1.content;
然后在pageproducer1的onhtmltag中写替换<#replace taget>
的程序,这是很标准的写法,转换成ISAPI也没问题(见DEMO)
但是还可以简单的这么写CGI
您可以直接在OnAction事件中在<#replace taget>
处插入您的内容,不去管OnHtmlTag事件,默认的能自己
去掉<#replace taget>.这样写CGI也不会有问题,但是
转换成ISAPI就会出错,错误就是您访问一次,他就插入一次
...
我就曾经因为偷懒而犯过这种错
还有一些区别!其实也算不上区别,而是ISAPI带来的问题
如共享数据.
所以还是有必要说一说ISAPI到底有那些特殊的地方,应该
怎么写!
请教与
默然心澄者(您的站点总是让我死机,java太多)
YySun
晓峰
 
cj大哥:分越多越小气,所以要修到最高境界很难:-)
 
to zx:
你理解错了,我的本意是D4与D3没有差别!
不是ISAPI与CGI之间无差别
 
zx:
其实你碰到的问题是应为忽视了ISAPI和CGI之间的区别
对于每个请求CGI产生一个实例,请求完了后释放
ISAPI对于所有的请求只是一个。
所以CGI不用考虑重入问题,而ISAPI就要注意了。
你那样的问题我也碰到过,加个FALG就可以了。
其它比如数据库CGI可以由系统在程序结束时自动关闭
而ISAPI就需要自己留神了!
个人认为:只要注意了原则上的区别,就可以了,
归根结底 DLL 和 EXE的区别。
 
mayday: 我的确是用的 CGI EXPERT;不过只写了一个程序,不熟
ZX:谢谢,SORRY,本以为是道简单的题目。4399/CJ。
晓峰:同意,不过CJ懒,如果有简单的方法就好了,写CGI是为了调试简单。
 
>所以要修到最高境界很难:-)
修什么?
 
如果用Delphi 4.0的Web Server Application Wizard建立的CGI则可以直接转换成
ISAPI.
1. New一个Web Server Application, 选择ISAPI
2. 用原来CGI的WebModule替换新的WebModule
That's it!
 
后退
顶部