用vfp制作WEB网页(一)

写在前面

这篇文章应该在 3 年以前就写的,那时候 Visual FoxPro 6 刚推出,它的一个卖点就是:与 ASP 合作,充当 Web Server。总的来说,国内对技术的理解、国内对技术的需求、国内对技术的接纳都明显落后于国外——在今天,应该是讨论 Web Service 的时候,我还是愿意花一点时间和大家一起探讨 Web Server。

至于,Web Server 与 Web Service 的区别,BOE 会有专题讨论。

我从来没有写过 ASP 代码,本文权作为引玉之石……

缘起

前些天,Boby 给了我一个 QXF 大侠写的 FoxWeb 应用,很不错。FoxWeb 是 Visual FoxPro 的一个第三方产品。当时我就在想,能不能用纯 Visual FoxPro 实现相同的功能呢?

当然可以,Web Server 技术与 FoxWeb 应用的核心技术都是 Visual FoxPro 编写的 COM 组件,只是作为第三方产品 FoxWeb 又加入了一些其他的功能,听说提供一种功能类似于 ASP 的脚本语言,它的语法习惯与 Fox 差不多。

这里,我们将不使用任何第三方产品来实现一个简单的 Web Server。现在,就让我们开始吧!

总的构架

基本 WEB 页面

你应该知道,最基本的页面(纯静态的那种,www.boeworks.com 就属于这一类) 是如何被显示在你的浏览器中的,你还应该知道浏览器的最基本的工作原理。

客户端浏览器向WEB 服务器发送 WEB 页面请求,然后 WEB 服务器处理这种请求,并通过 Internet 将 WEB 页面的 HTML 代码发送回发送请求的客户端浏览器,由浏览器来解析 HTML 代码,最后显示出来。这里的 HTML 代码当然可以包括一些其他的客户端支持的代码,如CSS、DHTML、XML甚至是JScrip、VBScrip,总之它们与 HTML 代码一样在客户端浏览器里执行或者解析。

总的来说,基本 WEB 页面就是 WEB 服务器收到请求后“直接”把 HTML 代码发送回给客户浏览器。这种模式的系统构架图是这样的:

服务器端的动态页面

这种简单的页面处理模式并不能解决我们的需求,因为 WEB 服务器只是简单的把现成的 HTML 代码返回给客户浏览器,这就显得非常“木讷”了。例如在一个论坛网站(像 www.myf1.net 或者 http://www.foxcn.com)里,难道每有一个新的帖子,网站的维护者就要重新做一张页面吗?这显然是不可能的!

为了在 WEB 服务器接受客户浏览器发送请求和返回页面之间能灵活的干预页面的产生,人们提出了很多办法:CGI、ISAPI、ASP、ASP.NET、PHP、JSP……它们的共同特点就是:干预被返回的WEB 页面的生成,这样就能根据 Web 服务器的具体(往往是根据数据库)情况产生不同内容的网页,这就是所谓的动态页面。刚才说的 www.myf1.net 就是基于 ASP 的(但是没有用到外挂组件),而 http://www.foxcn.com是基于 CGI 技术的。

从 MS 方面看,对动态网页的支持主要是通过 CGI、ISAPI、ASP 和 ASP.NET 实现的,它们都运行在 MS 的 WEB 服务器产品 Internet Information Server(IIS)上。

好了,回过头来看我们的 Visual FoxPro 是如何参与到这些应用中去的。Visual FoxPro 完全支持 ISAPI、ASP、ASP.NET,Visual FoxPro 可以为它们提供组件。说到组件,当然是指 Visual FoxPro 开发的 COM 组件了。

今天的专题不涉及 ISAPI 和 ASP.NET 与 Visual FoxPro COM 组件的结合应用(BOE 有计划专题讨论与 ASP.NET 的结合应用的问题),这里我们只是集中精力讨论 ASP 与 Visual FoxPro 开发的 COM 组件的联合应用。

当 ASP 离开了 COM 组件

首先,我们用自己的 Fox 经验思考一下:Visual FoxPro 编写的 COM 一般能提供一些什么功能?我的答案是对数据库的处理,包括 Visual FoxPro 的本地数据和各种类型的远程数据(来自Access、SQL Server的数据)。确定了这一点以后,再让我们看看在 ASP 里有没有处理数据库的语素:有,就是著名的ADO。ADO 属于 ASP 的内置(Built In)组件,类似的还有 Session、Application 等组件。

据我所知,现在有不少人在 Visual FoxPro 里使用 ADO 了,那么再用 Visual FoxPro 开发 COM 给 ASP 调用是不是多此一举?我看,不见得,原因如下:

第一。在 ASP 里驱动程序运行的是脚本语言(通常是 VBScrip)。既然是脚本语言,就注定了 ASP 程序是解释执行的,效率很低!而 Visual FoxPro 是编译执行的语言,漫长的 Fox 历史证明了它处理数据、处理字符串时迅捷的速度,把大量处理数据库、处理字符串的运算放在 Visual FoxPro 编写的 COM 组件里,无疑能提高 ASP 的运行效率。有人测试,用了 Visual FoxPro 的 COM 以后比纯 ASP 的程序的速度提高几倍甚至几十倍!

第二。如果你看过别人编写的 ASP 的代码,你可能会头疼——专业的程序员会很不习惯 ASP 里HTML 与 VB 脚本混杂在一起。所以,常常有人抱怨:页面一变,ASP 代码就混乱的一塌糊涂……如果,我们把相关代码分装在 COM 组件里,利用 Visual FoxPro 面向对象和面向过程的优势,能使得整个代码更整洁、更容易维护。

第三。在一些大型应用里,可能要考虑服务器的负载平衡和分布事务,这通过单纯的 ASP 是根本无法解决的。而 Visual FoxPro 编写的 COM 支持 MS 的 COM+,通过 COM+ 就能解决负载平衡和分布事务的难题。

第四。这是最实惠的一点。用了 COM ,就能使传统的 Visual FoxPro 程序员一下子成为了 WEB 解决方案的一员,而且不需要另外学习更多的新技术,起码对数据的处理,我们是“行家里手”。

ASP 里调用 Visual FoxPro 编写的 COM 的构架

上面这张就是“ASP 里调用 Visual FoxPro 编写的 COM ”的构架图,这里我解释一下:

与“基本 WEB 页面”类似,客户端浏览器发送请求到 WEB 服务器,WEB 服务器接收到有关请求后执行 ASP 脚本程序,产生 HTML 代码返回给发送请求的客户浏览器,客户浏览器解析 HTML 代码,显示 WEB 页面。在执行 ASP 脚本程序时,可以根据需要调用各种 COM 组件,一般的 COM 组件会返回一些数据以帮助 ASP 生成 HTML 代码。这里的 COM 组件可以由各种开发工具编写,当然包括 Visual FoxPro 编写的。如果是 Visual FoxPro 编写的 COM 组件,在运行时必须有相关的Visual FoxPro 运行时刻支持。例如,在 Visual FoxPro 7 里,编译成为“多线程”进程内的 COM 的运行时刻文件是 VFP7t.dl。

在上面这张图里,大家可能对 ASP.DLL 会有疑问,这其实是 ASP 的运行库文件,ASP 的功能都来源于它!

更新 COM 组件

一般来说,COM 组件运行在 IIS 的内存空间里(进程内组件)。当 IIS 被启动(往往是开机的时候),第一次调用 COM 组建以后,COM 组建就运行在 IIS 的内存里了(所以第一次调用特别慢),这时我们就不能重新编译、更新 COM 组件了。以前,往往看到重新启动计算机的建议,这就给调试 COM 组件带来了很大的麻烦。这里,我介绍一种简单的方法:

在命令行窗口里执行:iisreset

它的作用是尝试关闭并且重新启动 IIS ,这样被运行的 COM 组件就被释放出来了。这样,就能很容易的重新编译、更新 COM 组件了!

时间: 2024-10-06 09:11:30

用vfp制作WEB网页(一)的相关文章

用vfp制作WEB网页(二)

实例教程 概览 这是一个计算机中级考试的成绩查询系统,可以通过姓名或者准考证号码查询出考试成绩,查询界面是这样的: 如果有结果返回,返回的结果将这样显示: 如果没有记录被查到,将显示这个页面: 代码分析 Index.htm 这是客户端浏览器上的查询界面,负责向 WEB 服务器发送请求.关键代码是: <FORM name=search onsubmit="return validate_form()" action=search.asp method=post> 表示用 PO

如何利用Dreamweaver批量制作web网页

  其实我们可以借助Dreamweaver模板来完成这步的,下面就详细介绍一下吧! 一.建立模板 1.创建模板页面 最简单的办法是将一个网页另存为模板文件,通过执行命令:File→Save as Template,DreamWeaver会在网站根目录中建立一个模板文件夹--Templates来保存该模板. 当然,也可以新建一个模板:Window→Templates,会出现的Templates面板,单击右下角的New Template按钮,输入文件名,就建立了一个空模板;再单击Open Templ

Dreamweaver定义模板批量制作web网页

做网站,麻烦在更新和改版,特别是大规模更新,如果不是用cms系统,手工工作量非常大. 告诉你个秘密吧,其实只要用好模板工具,就能很好地"批发"网页.常见的网页制作工具如DreamWeaver中都有这项功能,使用模板就能减少大量的重复劳动. 一.建立模板 1.创建模板页面 最简单的办法是将一个网页另存为模板文件,通过执行命令:File→Save as Template,DreamWeaver会在网站根目录中建立一个模板文件夹--Templates来保存该模板. 当然,也可以新建一个模板:

利用Dreamweaver批量制作web网页教程

  做网站,麻烦在更新,特别是大规模更新,工作量非常大.真不知那些创意不断而又勤奋的"站长",隔三岔五将网站来个"大换血",是怎么忙过来的. 告诉你这个秘密吧,他们很多是在"批发"网页,并且你的机器中也有这样的"批发站"呢!这个好东东就是--模板.常见的网页制作工具:FrontPage.DreamWeaver中都有这项功能.如用DreamWeaver 3.0 制作网站时,使用模板就能减少大量的重复劳动. 一.建立模板 1.创建

PhotoShop制作灰色调绚丽的商业web网页设计教程

教大家用PhotoShop设计制作一款淡灰色调为主的绚丽商业web页面效果,该教程将逐步教您如何制作一个华丽的Web网页, 喜欢的同学可以学习一下! photoshop教程效果图: 1.首先需要创建一个新文档,大小 1200*1172px,背景设置为#efefef 2.使用矩形工具,在所创建新的图层内一个大的灰色矩形,命名"Grey",大小1200*62px. 3.为这个Grey矩形添加如下图层样式. 分类: PS入门教程

如何用Dreamweaver批量做web网页

dreamweaver|web|网页 做网站,麻烦在更新,特别是大规模更新,工作量非常大.真不知那些创意不断而又勤奋的"站长",隔三岔五将网站来个"大换血",是怎么忙过来的. 告诉你这个秘密吧,他们很多是在"批发"网页,并且你的机器中也有这样的"批发站"呢!这个好东东就是--模板.常见的网页制作工具:FrontPage.DreamWeaver中都有这项功能.如用DreamWeaver 3.0 制作网站时,使用模板就能减少大量的

用ASP技术实现在WEB网页上浏览目录及文件

web|网页 用ASP技术实现在WEB网页上浏览目录及文件 周仰平 摘要  目前在许多单位里,象WORD.EXCEL或WPS该类文档文件已成为重要的数据信息资源,在INTRANET WEB平台上如何高效率地管理这些信息资源是一个需要解决的问题.本文是利用ASP技术开发一个基于WEB的应用程序,实现在WEB页面上浏览目录文件,很轻易地做到诸如WORD.EXCEL和WPS等文档文件的查阅和下载,大大地减少信息维护的工作量. 关键词  ASP  WEB  文档文件   前言:在INTRANET平台上,

FrontPage XP制作多媒体网页

frontpage|媒体|网页 在制作出图文并茂的网页之后,很多读者朋友还想让自己的网页能够播放音乐.视频等多媒体文件,这一次我们就来看看如何制作多媒体网页,需要提醒朋友们的是,在网页中内嵌多媒体文件会影响网页的下载速度,所以在向网页中插入音频或者视频的时候,要注意得当,不要太嚣张了^_^. 添加音频文件 1.嵌入法 FrontPage XP支持的多种声音的格式文件,主要包括MIDI.WAV.AIFF和AU等,让我们来看看如何在网页中加入声音效果. 建立一个新页面,然后执行"插入/Web组件&q

使用 AI 为 Web 网页增加无障碍功能

本文讲的是使用 AI 为 Web 网页增加无障碍功能, 原文地址:Making the Web More Accessible With AI 原文作者:Abhinav Suri 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:lsvih 校对者:Tina92,Cherry 使用 AI 为 Web 网页增加无障碍功能 图为一位盲人正在阅读盲文(图片链接) 根据世界健康组织的统计,全球约有 2.85 亿位视力障碍人士,仅美国就有 810 万网民患视力障碍