分享

Visual Foxpro漫谈(一)

 happyngkmw 2012-09-08

Visual Foxpro漫谈(一)

时间:2007-05-09 本站
-

前言

这篇文章可以说是 BOE 数据网络工作室的开山之作了。它的动工是从2000年国庆节开始的,写写停停,直到那年的农历春节才完成初稿……

后来我有几次修改,算在2002年4月的这个版本,应该是第四版了!

当初,我写这篇文章的动机是:平静的表达我的观点。作为一名 Visual FoxPro 的程序员经常受到别人的质疑、甚至是批驳、挖苦,我不是一个擅长口舌争斗的人,更不敢冒犯“众怒”。于是我就用键盘陆续敲击一些文字,表达我对 Visual FoxPro 的认识,同时表达对各类问题的看法……

近两年来,就我本人来说发生了很多变化:由于工作的关系,我接触了很多其他的开发工具,其中有大家广为熟悉的Delphi,也有国内不见经传的Rapid Plus、InTouch、InSQL、InTruck。体会过种种、经历过许多,我觉得我更有能力完成此文了,我希望站在公正的立场上看待Visual FoxPro,而不是社会上一味的批评、鄙夷,更不是Fox Fans的“天下我是老大”的心态!希望大家能在文章中感到BOE的成熟和进步。

网友们特别喜欢这篇文章,我知道Fox 的 Fans能在此处得到共鸣,其实我写这篇文章也就是要把平时大家关心的话题总结归纳一下,去粗取精、去伪存真……

去年春天 Visual FoxPro 7 就正式发行,好多狐友都在等待简体中文版,很遗憾的是,微软并没有汉化它。我觉得,没有任何必要使用简体中文版的Visual FoxPro 7,原因如此:功能上讲,中文版与英文版完全相同;Visual FoxPro 7的IDE与以前版本没有什么区别,所以对于熟悉Visual FoxPro的用户来说,使用上不会有任何障碍;再就是Help文件,Visual FoxPro 7自带了一个完整、独立的英文版的,而中文Visual FoxPro 6的Help是集成在MSDN里的,巨大无比,其实也没怎么汉化,一般的Fox Fans都不装的,所以就帮助来说,对于不熟悉英语的朋友来说,英语Visual FoxPro 7与中文Visual FoxPro 6是一样的;Visual FoxPro 7从各方面来说,均非Visual FoxPro 6可比拟的,升级开发工具是必然的。所以,希望各位,升级到Visual FoxPro 7吧!

Visual FoxPro是什么

作为市场上最灵活和功能最强大的数据库管理系统,Visual FoxPro拥有悠久而辉煌的发展历史。它初创时是Fox Software公司的FoxBASE产品,“Fox”(这是国际编程界对它的称呼)一种可靠、便捷和高效的程序员用的数据库产品而名闻遐迩。 世界上没有一种产品像 Visual FoxPro 那样运行,它是独一无二的!

许多人在享受了Visual FoxPro的服务后却说不清它是什么。就让我们沿着它的发展轨迹了解了解它吧!这会使您能对它有更深刻的认识。

FoxPro隶属于一种名为Xbase的DBMS类别。Xbase这个术语很常见,他表示诸如FoxPro、dBASEIII PLUS、dBASEIV、FoxBASE+以及ARAGO的语言。Xbase最初起源于一个大型机使用的DBMS,这个DBMS叫做JPLDIS(喷射推动实验室数据库管理和信息检索系统)。这个DBMS 是由美国人Jeb Long在1972年开发成功的。到目前为止全世界的开发者和程序员已经编写了几千万行的Xbase代码。

追溯到80年代末,FoxBASE是dBase的克隆系统。只要是dBASEIII能做的工作,FoxBASE就能做得更好更快。FoxBASE虽然拥有某些全新的特征,但它并没有真正重大的技术突破,只是为了运行得更快更好,而更重要的是它与dBASEIII兼容。

FoxPro 1.0首先背离了与兼容的原则。它开始在图形用户界面的设计和软件开发方法中采用一些新的思路,从而使它领先于当时年前景已不妙的dBASEIV。

从2.0开始,FoxPro才真正形成了它自己的特色。当FoxPro 2.0推出时,它包含了若干项关键技术,给PC数据库开发市场带来了革命性的变化。这些技术是:

  1. 加入了Rushmore技术,它能从事许多难以想象的复杂工作。突然之间,带有以百万计数的记录的表格在PC数据库系统中不仅成为可能,而且可以非常容易地加以实现,无需转用其他比较昂贵的技术;Rushmore最重要的优点在于它是完全自动化的,不用用户花费精力和时间。因为有了Rushmore技术,再加上Fox天生的快速,即使在今天Visual FoxPro仍然是最快的桌面数据库引擎。

  2. SQL语句是FoxPro 2.0推出的另一项具有革命性意义的关键技术。Fox的开发人员首次用单一语句取代了整个程序过程,并且这种支持是内含于Fox数据引擎之中的。SQL语言曾经并且现在仍然是强大的数据语言。
    FoxPro 2.0还推出了某种所见即所得的开发报表和屏幕的工具。

FoxPro 2.0确实具备了我们今天的Visual FoxPro拥有的一些出色的功能。GUI设计服务、SQL和极快的数据访问,是它明显的特征。

FoxPro 2.5有for DOS、for Windows版,不过那个Windows版只是具有看上去像“Windows”的DOS应用程序的外观。特别是那个DOS下的版本绝对是经典之作,观察身边是不是还有很多这样的系统在运行着?当时有人这样评价:这个软件已经无法再快了,除非硬件升级……

直到1995年春天Visual FoxPro推出时,才出现了FoxPro的又一次重大改进(这时Microsoft已经收购了Fox Software公司)。Visual FoxPro 3.0增加了一些人们企盼已久的特性,使PC数据库开发界大为震惊。我们可以看到:Visual FoxPro与FoxPro是由很大差别的,不要再把Visual FoxPro成为FoxPro了。这些特性是:

  1. 数据库容器(Database Container),也叫DBC,它增加了开发人员多年盼望的对存储过程的支持、与表格相关联的数据规则和一系列的附加数据功能。

  2. 远程数据的无缝连接。谈到连接远程数据的处理,大家往往会想到RDO、ADO、BDE等处理数据引擎,那么Visual FoxPro利用什么实现远程数据的无缝连接?Visual FoxPro本身的数据处理引擎,这和其他任何开发工具都是不同的!Visual FoxPro数据处理引擎通过ODBC驱动程序与远程数据库服务器“通话”,远程数据库服务器的ODBC驱动程序能将Visual FoxPro数据转化成可由他们解释的数据;相反,Visual FoxPro的ODBC驱动程序也能将远程数据转化成可由Visual FoxPro数据引擎处理的数据。可见,只要远程数据库有ODBC驱动程序,就可以用Visual FoxPro最为客户端软件。常见的SQL Server、Oracle、Access等数据库都提供ODBC驱动程序。

  3. 在Visual FoxPro中实际操作远程数据有两种方法,远程视图和SPT技术。视图(View)是可更新的SQL光标,增加了一整套的数据访问方法,用于数据处理、GUI显示和报表制作。它支持两种类型的视图,即本地视图和远程视图。本地视图是基于Visual FoxPro表格的视图,远程视图是基于任何ODBC数据源的视图。另外为了使Visual FoxPro成为完整的C/S开发环境,除视图之外Visual FoxPro还支持SPT(SQL Pass Through)技术来完成视图无法完成的工作,比如数据库服务器的用户管理、存储过程调用等。View与SPT技术的产生后,Visual FoxPro就成为访问远程数据的主要工具。从总体来看,创建整个企业范围内的应用程序和使用存储在远程数据源中的数据,几乎与使用Visual FoxPro表格本身一样容易,处理在数据存取时增加了一些命令、函数,数据处理与普通的Visual FoxPro编程没有任何区别。再次指出:Remote View与SPT技术是由Visual FoxPro数据处理引擎直接支持的,这与在VB、VC++中的外部数据访问技术不同(他们使用组件,如:DAO、RDO、ADO……),所以用Visual FoxPro访问远程数据的效率很高,并能把远程数据与本地数据完美的融合在一起,最大程度地提高开发效率和程序运行效率。

  4. 完全支持面向对象技术(OOP)。充分而健壮的实现了面向对象的处理方式大大改善了软件开发条件。健壮的对象模型和创建你自己的类及子类的所用的功能,形成了一种全新的软件开发手段。

Visual FoxPro 5.0是3.0的升级版本,它是一个32位的系统。具备了使用和创建COM服务器的功能,并开始支持在Internet上发布Visual FoxPro。从这个版本开始,Visual FoxPro进入了Visual studio家族,并且Visual FoxPro将不再升级的谣言也是在这个时期出现。

在Visual FoxPro 6.0出现之前,微软计划推出DNA,演化到今天就是.NET,并承诺把Visual FoxPro发展成健壮的中间层工具,所以这以后Visual FoxPro的变化初级用户就不太容易感觉了。

Visual FoxPro 6.0也没有根本上的变化,不过有些变化还是相当明显的。Access和Assign这两种方法在控制放入你的对象中的数据方面很有创意。运用新的Component Gallery(组件库)和Foundation Classes(基础类),你能很容易地转向创建面向对象的应用程序的工作。对COM支持的更好,在Server Pack 3后我们可以用Visual FoxPro创建多线程的COM组件。

Visual FoxPro 7是Fox第一个可视化版本——Visual FoxPro 3以后的最具有革命意义的一次产品升级换代。关于它的特性,稍候本文会有专门段落讲解。

Visual FoxPro的语言是由Xbase、SQL、OOP构成的。我不知道这样分解是否合理,我只是从FoxPro的发展历史得出以上结论的。其实以上三者在Visual FoxPro完美的融合在一起了,已经与Visual FoxPro血脉相连、不可分割,很多语句、函数很难区分它属于哪个门类(也没必要)。再者Xbase这一叫法也不十分妥当,这样容易让人误会,好像Visual FoxPro的语言是没有发展的“死语言”、是十几年前的“老古董”,其实在FoxPro每一次升级中(现在已是Visual FoxPro 7)都会对这部分语言进行修订、增补。我看还是这样:Visual FoxPro语言就叫它:“Visual FoxPro语言”,它既不同于任何以往的Xbase(最多有历史渊源),也不同于其它的编程语言。这就象Delphi那样,是Object Pascal语言,不是以前的Pascal;VB就是VB,不是以前的 Basic。

从Fox进入可视化的时代后,对COM技术的支持一直是Visual FoxPro在过去、现在、将来不断改进的地方。面向对象程序设计(OOP)的最大的好处就在于代码的重复使用。然而,OOP只是一种解决代码重复使用的一种优秀的方案(solution)。单纯利用OOP技术不仅要求所有对象都必须用一种语言完成,并且你还需要得到原程序代码嵌入应用程序(就像我们在Visual FoxPro开发使用Class那样)。如果对象是有你或你的公司完成的这些可能不是什么问题,但如果对象是由其他人或其他公司写的这就是问题了……再者为了节省资源我们常希望把一对象放在远程的计算机上供许多应用程序使用,怎样简单、安全完成这个任务呢?看来,单有OOP是不行的!于是微软提出了Component Object Model(COM)技术,有了它我们就不需要把对象源程序嵌入我们的应用程序中,就可以使用其他语言开发的对象,就可以分布的使用对象了。

COM技术提供四种不同的特性,Visual FoxPro支持所有的COM 特性。

  1. ActiveX documents 允许用户在一个应用程序中编辑另一个应用程序的document。我们把Word文档嵌入或链接到Visual FoxPro中,就可以不离开Visual FoxPro编辑Word文档了。

  2. ActiveX controls 为开发人员提供了增加的系统功能的方法,典型的应用就是各类ActiveX控件的使用来加强用户界面。这里要说明的是Visual FoxPro不支持(7.0也不支持)“集装箱式的”ActiveX 控件,比如Cool bar控件。

  3. Automation 允许用户在一个应用程序中操纵另外一个应用程序或组件,典型的应用就是Visual FoxPro 与Office 的OLE-Automation应用。

  4. Remote Automation 或者称 Distributed COM (DCOM)与Automation技术差不多,只是它支持组件的分布,这就是微软的分布式应用战略。

Visual FoxPro 不支持Active controls(ActiveX)的开发,但支持server components的开发,也就是在Automation、Remote Automation中使用的组件都可以用Visual FoxPro来开发。Visual FoxPro的这种能力是从5.0开始具有的,到了6.0的SP 3已经可以开发出多线程的组件了,这些在上文已经有过论述。以后的 Visual FoxPro 版本一定会对Automation,特别是Remote Automation有更好的支持,无论是开发server components,还是由Visual FoxPro充当客户程序。

综上所述,Visual FoxPro是创建关键任务的、企业范围的、面向对象的单层次、双层次、多层次应用程序的重要开发工具,这些应用程序可以在本地或全球范围内进行配置。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多