W
wjiachun
Unregistered / Unconfirmed
GUEST, unregistred user!
发表于《电脑知识与技术》2003第八期
IntraWeb 从起步到入门
文 王甲春
如果你以前从来没有开发过Web应用程序,那么你可能觉得IntraWeb没有什么特别之处,因为它确实
和你想象中需要的Web开发工具一样;如果你以前曾经开发过Web应用程序,那么你应该一眼就能看出
IntraWeb是多么的强大、多么的与众不同。
一、IntraWeb是什么
很多经验丰富的Delphi程序员可能还会记得当年Borland关于Active Forms方面的市场竞争,但是如果
你当时的工作和Web应用程序的开发无关,那么你可能不会太注意这件事。但是现在,假设你需要将公司一
个应用程序改写为Web方式的(就算是C/S向B/S的改写吧),你可能首先考虑到Active Forms。遗憾的是
Active Forms只能应用于IE浏览器,并且它不是HTML方式的代码。没错,Delphi 6 及其以前的版本提供了好
几个Web开发技术,Active Forms并不产生HTML代码,它只是产生一个“插件”,需要被IE下载到本地执行。
也就是说,Active Forms其实相当于一个EXE文件的不同分发方式而已。
那么你可能又会考虑使用Web Broker或者Web Snap?但是,你很快就会发现它们不是RAD方式的,而且大
部分Web程序开发工具都不是,就像古老的Turbo Pasal一样。近来这工具进步了许多,就像TurboVision一样
有了简单的界面。但是我们不妨一起设想一下:图形化的Delphi,几乎没有什么控件,也没有窗体设计器,所
有的窗体都需要在运行器创建,什么控件都要你自己创建并运行和测试它,多次重复就是为了得到合适的程序
界面……不要觉得可怕,目前很多Web程序开发工具就类似于这样的方式。一句话,它们不是完全可视化的。
怎样才有资格被叫做“RAD”?RAD,英文Rapid Application Development的缩写,直译为“快速应用开
发”。可视化是RAD的一个重要特征,但却不是RAD的定义的一部分。就像数学里面集合的定义一样,每个人对
RAD的定义描述可能都不一样。
那么使用IntraWeb吧,它是AToZed公司开发的一套第三方控件,但是Delphi 7里面直接集成了它,如果是
其他版本的delphi,你不妨自己从它的主页上下载后安装。有了它,开发Web应用程序就像利用Delphi开发一般
的应用程序一样爽:可视化的建立窗体,加上控件,改变属性,产生事件……比如说想显示一个对话框,调用
WebApplication.ShowMessage就可以做到。IntraWeb的控件和Delphi本身的控件一样是可以扩展的,它开发出
来的Web应用程序可以在IE 4以上和Netscape 4以上版本的浏览器里面正确执行。
你想知道IntraWeb和其他工具有哪些不同之处么?那么你随便找一个IntraWeb的例子,用Web Snap方式再
写一遍,比较一下:哪一种方式花费的时间长?哪一种方式更接近于一般的Delphi代码?哪一种方式需要写的
代码多?哪一种方式更加复杂?你愿意选择哪一种方式?如果答案不是IntraWeb,那么本文你就没有继续看下
去的必要了。
目前,比较接近IntraWeb方式的工具就是Micorsoft的ASP.Net,至少它们表面上看起来比较类似。但是,
如果你想开发一个大型的Web应用程序的话,你就会发现它们其实也有很大的不同点。尽管两者有很多不同点,
但是两个最突出的不同点就是语言和session管理。
关于语言,我们可以不严格的这么说:IntraWeb是Delphi语言,而ASP.net是Visual Basic语言或其他
Microsoft的语言。
关于session管理,ASP.net拥有自动管理session,就是说它跟踪你的session信息,但是你需要在不同的
页面之间自己处理状态信息。那么IntraWeb的session管理呢?想想在一个普通的应用程序里你是怎么处理session信息
的——不需要处理?完全正确!使用IntraWeb你根本不需要管理状态信息。
二、IntraWeb起步篇
1988年,在Brian Kernighan和Dennis Ritchie两位大师合著的《C程序设计语言》一书中,开始就是著名
的“Hello,World”程序,所以后来的计算机书籍或者讲座都会以“Hello,World”作为起步的范例,本文也
不打算例外。
用打开Delphi 7企业版新建一个工程,如图1所示选择“IntraWeb”面板的“Stand Alone Application”
模式,这样开发出来的就是独立的Web应用程序,就是说它本身不需要PWS或者IIS之类的服务支持了。接下来
Delphi 7会让你选择保存路径,保存好路径以后注意一下,默认的程序有两个窗体,标题分别是
“IWServerController”和“formMain”。
“IWServerController”窗体就相当于服务器,“formMain”就相当于客户端显示的Web页面。开发者应该
把主要精力集中在客户端显示的Web页面的设计上,所以我们下面主要关心的就是“formMain”窗体。
选择控件面板“IW Standard”里面的标签控件“IWLabel”(如图2所示)放到窗体上,把它的“Caption”属
性设置为“Hello,World”。下面按F9运行一下,出来的是如图3所示的服务端界面。按下工具栏上的第一个浮动按
钮,直接在本机测试最终效果如图4所示,虽然比较简单和简陋,但是我们迈出了成功的第一步!
你可能还是有一些疑惑,图中IE浏览器的地址栏里面的地址是“http://127.0.0.1:4202/EXEC/0/8C430B01184339C91B5BE240”,
怎么这么奇怪啊?不用担心,你自己直接打开浏览器,输入IP地址和端口“http://127.0.0.1:4202”就直接可以访问了。
下面关掉服务程序回到设计页面来,把标签的字体颜色改为红色,即“Font”属性的
“Color”项设置为“clRed”。再把窗体的背景色改为天蓝色,即“BackGroundColor”属性设置为“clSkyBlue”。
再按F9运行一下,按下服务程序工具栏上的第一个浮动按钮测试,你会发现网页的背景是天蓝色的,而
“Hello,World”文本则是红色的,是不是觉得有些提高了?
美中不足的是,细心的你可能发现这次浏览器显示的端口号不是上次显示的4202了。虽然服务程
序右侧的编辑区域显示了端口号码,但是让别人访问你的Web应用程序时,端口号不是固定的可不好啊。
下面再次关掉服务程序回到设计页面来,留意一下“IWServerController”窗体。它有
一个“port”属性,这就是访问的端口,默认值为0表示不固定,由程序随机生成。我们完全可以给
它设置一个固定值,假定设置为Http服务的默认端口80,这样客户端访问时就不用输入端口,直接
输入IP地址就可以访问了。
再按F9运行一下,然后用客户机的浏览器输入服务器的IP地址作一个测试,这下满足了吧?
三、IntraWeb入门篇
请各位先来点鲜花和掌声,下面就会带你进入IntraWeb大门。
接着上面的例子继续进行,在网页上作一个简单的加法器,在两个编辑框里面输入整数,点击按钮就提示两者之和。我知道直接在HTML代码里面写JavaScript代码也可以实现这个功能,但是我不想这么做。
如图5所示,首先在formMain”窗体上加入两个编辑框控件IWEdit1和IWEdit2,设置Text属性为空,作为输入整数之用。然后再加上一个按钮IWButton1,设置Caption属性为“两者之和”,作为点击计算两者的和之用。
最关键的时刻来到了?如何计算两者之和?由于编辑框输入内容Delphi将它当作字符串处理,所以需要预先将编辑框的内容利用StrToInt函数转换为整数,最后再用IntToStr函数将整数转换为字符串。这两个函数都在SysUtils单元定义了,所以需要在Uses单元里面加入SysUtils。
双击按钮IWButton1,编写加法过程:
procedure TformMain.IWButton1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(IWEdit1.Text);
b:=StrToInt(IWEdit2.Text);
c:=a+b;
WebApplication.ShowMessage(IWEdit1.Text+'+'+IWEdit2.Text+'两者之和是:'+IntToStr(c));
end;
按F9运行一下,做一个简单的测试,在两个编辑框分别输入42和71,结果如图6所示。
你可能会关心到这么一个问题:咱们写代码是假定编辑框输入内容是可以转化为整数的,要是输入其他非数字的字符呢?比如在两个编辑框分别输入42和ww,点击按钮就会出现如图7所示的警告对话框。怎么样?IntraWeb的保护功能比较强大吧?
细心的读者查看一下这个网页的源代码就可以发现,本质上这个计算的过程在源代码里面是不可见的。所以,如果这是一个加密或者验证的过程的话,我们也可以说这是相对安全的。
IntraWeb 从起步到入门
文 王甲春
如果你以前从来没有开发过Web应用程序,那么你可能觉得IntraWeb没有什么特别之处,因为它确实
和你想象中需要的Web开发工具一样;如果你以前曾经开发过Web应用程序,那么你应该一眼就能看出
IntraWeb是多么的强大、多么的与众不同。
一、IntraWeb是什么
很多经验丰富的Delphi程序员可能还会记得当年Borland关于Active Forms方面的市场竞争,但是如果
你当时的工作和Web应用程序的开发无关,那么你可能不会太注意这件事。但是现在,假设你需要将公司一
个应用程序改写为Web方式的(就算是C/S向B/S的改写吧),你可能首先考虑到Active Forms。遗憾的是
Active Forms只能应用于IE浏览器,并且它不是HTML方式的代码。没错,Delphi 6 及其以前的版本提供了好
几个Web开发技术,Active Forms并不产生HTML代码,它只是产生一个“插件”,需要被IE下载到本地执行。
也就是说,Active Forms其实相当于一个EXE文件的不同分发方式而已。
那么你可能又会考虑使用Web Broker或者Web Snap?但是,你很快就会发现它们不是RAD方式的,而且大
部分Web程序开发工具都不是,就像古老的Turbo Pasal一样。近来这工具进步了许多,就像TurboVision一样
有了简单的界面。但是我们不妨一起设想一下:图形化的Delphi,几乎没有什么控件,也没有窗体设计器,所
有的窗体都需要在运行器创建,什么控件都要你自己创建并运行和测试它,多次重复就是为了得到合适的程序
界面……不要觉得可怕,目前很多Web程序开发工具就类似于这样的方式。一句话,它们不是完全可视化的。
怎样才有资格被叫做“RAD”?RAD,英文Rapid Application Development的缩写,直译为“快速应用开
发”。可视化是RAD的一个重要特征,但却不是RAD的定义的一部分。就像数学里面集合的定义一样,每个人对
RAD的定义描述可能都不一样。
那么使用IntraWeb吧,它是AToZed公司开发的一套第三方控件,但是Delphi 7里面直接集成了它,如果是
其他版本的delphi,你不妨自己从它的主页上下载后安装。有了它,开发Web应用程序就像利用Delphi开发一般
的应用程序一样爽:可视化的建立窗体,加上控件,改变属性,产生事件……比如说想显示一个对话框,调用
WebApplication.ShowMessage就可以做到。IntraWeb的控件和Delphi本身的控件一样是可以扩展的,它开发出
来的Web应用程序可以在IE 4以上和Netscape 4以上版本的浏览器里面正确执行。
你想知道IntraWeb和其他工具有哪些不同之处么?那么你随便找一个IntraWeb的例子,用Web Snap方式再
写一遍,比较一下:哪一种方式花费的时间长?哪一种方式更接近于一般的Delphi代码?哪一种方式需要写的
代码多?哪一种方式更加复杂?你愿意选择哪一种方式?如果答案不是IntraWeb,那么本文你就没有继续看下
去的必要了。
目前,比较接近IntraWeb方式的工具就是Micorsoft的ASP.Net,至少它们表面上看起来比较类似。但是,
如果你想开发一个大型的Web应用程序的话,你就会发现它们其实也有很大的不同点。尽管两者有很多不同点,
但是两个最突出的不同点就是语言和session管理。
关于语言,我们可以不严格的这么说:IntraWeb是Delphi语言,而ASP.net是Visual Basic语言或其他
Microsoft的语言。
关于session管理,ASP.net拥有自动管理session,就是说它跟踪你的session信息,但是你需要在不同的
页面之间自己处理状态信息。那么IntraWeb的session管理呢?想想在一个普通的应用程序里你是怎么处理session信息
的——不需要处理?完全正确!使用IntraWeb你根本不需要管理状态信息。
二、IntraWeb起步篇
1988年,在Brian Kernighan和Dennis Ritchie两位大师合著的《C程序设计语言》一书中,开始就是著名
的“Hello,World”程序,所以后来的计算机书籍或者讲座都会以“Hello,World”作为起步的范例,本文也
不打算例外。
用打开Delphi 7企业版新建一个工程,如图1所示选择“IntraWeb”面板的“Stand Alone Application”
模式,这样开发出来的就是独立的Web应用程序,就是说它本身不需要PWS或者IIS之类的服务支持了。接下来
Delphi 7会让你选择保存路径,保存好路径以后注意一下,默认的程序有两个窗体,标题分别是
“IWServerController”和“formMain”。
“IWServerController”窗体就相当于服务器,“formMain”就相当于客户端显示的Web页面。开发者应该
把主要精力集中在客户端显示的Web页面的设计上,所以我们下面主要关心的就是“formMain”窗体。
选择控件面板“IW Standard”里面的标签控件“IWLabel”(如图2所示)放到窗体上,把它的“Caption”属
性设置为“Hello,World”。下面按F9运行一下,出来的是如图3所示的服务端界面。按下工具栏上的第一个浮动按
钮,直接在本机测试最终效果如图4所示,虽然比较简单和简陋,但是我们迈出了成功的第一步!
你可能还是有一些疑惑,图中IE浏览器的地址栏里面的地址是“http://127.0.0.1:4202/EXEC/0/8C430B01184339C91B5BE240”,
怎么这么奇怪啊?不用担心,你自己直接打开浏览器,输入IP地址和端口“http://127.0.0.1:4202”就直接可以访问了。
下面关掉服务程序回到设计页面来,把标签的字体颜色改为红色,即“Font”属性的
“Color”项设置为“clRed”。再把窗体的背景色改为天蓝色,即“BackGroundColor”属性设置为“clSkyBlue”。
再按F9运行一下,按下服务程序工具栏上的第一个浮动按钮测试,你会发现网页的背景是天蓝色的,而
“Hello,World”文本则是红色的,是不是觉得有些提高了?
美中不足的是,细心的你可能发现这次浏览器显示的端口号不是上次显示的4202了。虽然服务程
序右侧的编辑区域显示了端口号码,但是让别人访问你的Web应用程序时,端口号不是固定的可不好啊。
下面再次关掉服务程序回到设计页面来,留意一下“IWServerController”窗体。它有
一个“port”属性,这就是访问的端口,默认值为0表示不固定,由程序随机生成。我们完全可以给
它设置一个固定值,假定设置为Http服务的默认端口80,这样客户端访问时就不用输入端口,直接
输入IP地址就可以访问了。
再按F9运行一下,然后用客户机的浏览器输入服务器的IP地址作一个测试,这下满足了吧?
三、IntraWeb入门篇
请各位先来点鲜花和掌声,下面就会带你进入IntraWeb大门。
接着上面的例子继续进行,在网页上作一个简单的加法器,在两个编辑框里面输入整数,点击按钮就提示两者之和。我知道直接在HTML代码里面写JavaScript代码也可以实现这个功能,但是我不想这么做。
如图5所示,首先在formMain”窗体上加入两个编辑框控件IWEdit1和IWEdit2,设置Text属性为空,作为输入整数之用。然后再加上一个按钮IWButton1,设置Caption属性为“两者之和”,作为点击计算两者的和之用。
最关键的时刻来到了?如何计算两者之和?由于编辑框输入内容Delphi将它当作字符串处理,所以需要预先将编辑框的内容利用StrToInt函数转换为整数,最后再用IntToStr函数将整数转换为字符串。这两个函数都在SysUtils单元定义了,所以需要在Uses单元里面加入SysUtils。
双击按钮IWButton1,编写加法过程:
procedure TformMain.IWButton1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(IWEdit1.Text);
b:=StrToInt(IWEdit2.Text);
c:=a+b;
WebApplication.ShowMessage(IWEdit1.Text+'+'+IWEdit2.Text+'两者之和是:'+IntToStr(c));
end;
按F9运行一下,做一个简单的测试,在两个编辑框分别输入42和71,结果如图6所示。
你可能会关心到这么一个问题:咱们写代码是假定编辑框输入内容是可以转化为整数的,要是输入其他非数字的字符呢?比如在两个编辑框分别输入42和ww,点击按钮就会出现如图7所示的警告对话框。怎么样?IntraWeb的保护功能比较强大吧?
细心的读者查看一下这个网页的源代码就可以发现,本质上这个计算的过程在源代码里面是不可见的。所以,如果这是一个加密或者验证的过程的话,我们也可以说这是相对安全的。