分享

浅谈VisualFoxPro

 king9413 2012-10-25

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语言曾经并且现在仍然是强大的数据语言。3.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.完全支持面向对象技术(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。
综上所述,Visual FoxPro是创建关键任务的、企业范围的、面向对象的单层次、双层次、多层次应用程序的重要开发工具,这些应用程序可以在本地或全球范围内进行配置。
VisualFoxPro 与其他开发工具的比较    
   
   这其实是一个很傻的话题,选择何种开发工具完全是由于程序员的面临的任务以及个人的喜好决定的。只要您选用的工具能够胜任您从事的项目,只要您对开发工具有足够的造诣以应付多变、复杂的工作,只要这个工具还在继续升级,您就没有理由更换工具,更没有必要掺和到这种无聊的讨论中去。  
   
   任何工具都有其优势与弱势,产品定位更是各自不同,每个程序员都觉得自己的选择是最好的,别人都是愚蠢的。以下的讨论只是无聊的笔者发出的无聊的言论,您大可掠过不看。  
   
   谈论VisualFoxPro,我们必须注意这样一个问题:VisualFoxPro 是干什么用的。毋庸置疑,它是一种数据库系统的开发工具。    我个人认为,到目前为止在Microsoft公司的所有开发工具中,Visual  FoxPro是开发数据库应用程序的最佳产品。我们必须承认这样的事实:从一开始,VisualFoxPro 就是为处理数据而设计的,它运行速度快、功能强大、而且非常灵活。    
   
   有很多人老喜欢拿Access与VisualFoxPro    比较,对此我总不屑一顾,且让我们看看微软的评论吧!微软原话如下:“Microsoft Access 是 Office 中的数据库,也是微软所销售的软件中,使用最广且最容易学习的数据库工具。如果你是数据库的新手,如果你要使用Microsoft Office来建立应用程序,或者你想要一个相当便利的交互式产品,那么就选择Access。Visual FoxPro 是用来建立关系型数据库应用程序的一种功能强大的RAD工具。如果你是一位以建立关系型数据库应用程序维生的数据库开发人员,而且你希望速度与功能都达到极限,那么请选择Visual FoxPro。”(这段话在今年VisualFoxPro    退出VisualStudio后,微软又重复了一次,强调VisualFoxPro是专业开发人员的开发工具,而不是Access 那样的普通用户的办公平台。)  
   
   根据我的经验,Access的MDB数据库适用于20万条/表的数据量的应用(它比VisualFoxPro数据库的唯一长处是:所有的数据库组件都在同一个MDB文件里,而Fox的数据库可能有多个文件组成,显得凌乱。),数据量再增加的话,不是说Access不能处理了,而是效率不行了??查询、索引都很慢。VisualFoxPro能处理百万计甚至上千万计的数据量,这都是有实践根据,在过去的20多年里,特别是大型网络数据库没有平民化的年代里,业界就是依靠DBF数据表来管理数据的,毫不夸张VisualFoxPro是能够安全、高效处理大数据量的专业工具。  
   
   有多人拿VisualFoxPro与VB、Delphi甚至是VC++做比较,这是很幼稚的,后面三者是编程语言,而VisualFoxPro是数据库 系统的开发工具,天生分工就不同。  
   
   我听说过这样的典故:Foxmail最初是用Visual FoxPro编写的(所以叫做FoxMail),后来改用Delphi编写。如果这是事实就很能说明问题,VisualFoxPro是数据库开发工具以它编写邮件客户软件有点勉为其难,即使成功了效率也不会很高,但如果是一个用VisualFoxPro写的管理系统中要求有邮件功能,Visual FoxPro则完全可以做得很好。  
   
   VisualFoxPro作为数据库开发工具,它为我们提供了十分强健、高效的数据引擎,它容量大、速度快、灵活、健壮,所以用Visual FoxPro开发单用户数据库绝对比其他所有软件来的高效??曾经有人嘲笑VB处理5、6万条记录就趴下,但我们的Visual FoxPro处理百万条记录也不觉吃力,所以Visual    FoxPro的开发人员无论在什么时候都要注意发挥Visual  FoxPro的数据引擎的威力,这样才能立于不败之地。VC++很厉害,但真正地用好它不容易,    开发效率也不高。如果使用VC++开发应用程序还象VB那样只会使用控件,那么还是别使用VC++了(这叫挂羊头卖狗肉),再者VisualFoxPro本身是VC++编写的,是历代最优秀的程序员智慧的结晶,为什么有了VC++还要花精力编写VisualFoxPro,这本身就 很说明问题。  
   
   又有人把Power Builder请出来与Visual FoxPro作比较,大家都是数据库应用程序开发环境,好像PB比VisualFoxPro厉害。    就数据库系统的开发而言,Visial FoxPro 可以开发单用户系统、网络环境下的文件服务器系统、客户机服务器系统、WebServer、数据处理的COM组件、WebService,可以说除了Web界面无法开发之外,凡是与数据库系统有关的开发领域VisualFoxPro都很好的支持。PB的起点在客户机服务器系统,也能很漂亮的完成工作,此中取舍全凭个人喜好;另外,PB的成本很高。据我所知它的价格十分昂贵(有人戏称说PB是世界五百强才用的起的产品),而Visual FoxPro才卖几千人民币。当然,这个观点您可以不接受??在中国软件是没有价值的,每张只卖5元人民币;还有PB的开发方式与众不同,用了他以后再改学别的会比较困难;最后退一万步讲,您要变换编程工具,我也不赞成改用PB,因为PB再好也是一个数据库开发工具,从这上面讲与Visual FoxPro是一个级别的东西,您想变换工具一定有更多的需求,我看用C#或Delphi会是更佳的选择。  
   
   所有这些语言与VisualFoxPro相比,最大的区别就是:VisualFoxPro是程序设计语言与DBMS的完美结合,而Vc++、Delphi、Vb、PB都只是编程工具,而不是DBMS。Visual FoxPro的这一特性,决定了它更合适与任何类型的企事业单位,我无法想象??为了简单的查询还要用Vc++、Delphi、Vb、PB编写一个Exe文件,使用Command窗口多好!  
   
   又有人把网络数据库如Oracle、SQLServer与VisualFoxPro相比较,说了Visual FoxPro一大通的坏话,这种人其实很傻,你大可对他嗤之以鼻。大型数据库与桌面数据库在系统开发中的作用是不一样,两者是相辅相成的。我们应该把注意力放在“怎样发挥两者数据库引擎最高效能的问题上”,而不是去争论孰优孰劣。这种争论就好比是评论是男人漂亮、还是女人美丽那样??毫无意义。      
   
   Visual FoxPr 从Visual Studio 中分离出来了  
   
   2001年2月26日,微软宣布将VisualFoxPro 从VisualStudio 中分离出来,这是一个好消息还是坏消息呢?我们来分析一下:  
   Visual Studio.Net 是一种擅长于开发Web应用程序的工具,过去与现在微软霸占着"桌面应用程序"应用市场,现在微软要吞噬现在由其他公司控制的大型网络应用市场,于是推出了.Net构架,VisualStudio.Net就是开发基于.Net的应用程序的RAD(快速开发环境)。  
   
   笔者认为:起码在可知的一两年内,我们这些用Visual    FoxPro写程序的人不会有用VisualFoxPro开发大型Web应用需求,客观上绝大多数企业也不会有自建一个电子商务网站的需求,我们并不会因为Visual    FoxPro不是.Net语言而失去我们的市场--普通的企业级(单用户构架、File    Server构架、(两层、三层)客户机服务器构架)的应用。等.Net真正热起来,那将是几年后的事情了!  
   
   当然作为.Net语言也可以开发桌面应用程序,Visual FoxPro成为.Net语言不是更好吗?笔者的看法是:不一定。一位网友说:VB.Net的?法像VC++又像JAVA,已?完全不像BASIC?法了,等於是要重新??另一套?言了,有这种感觉的VB程序员很多,听说国外有很多VB程序员还"忧心忡忡"的。连微软也承认:VB 6与VB.Net是差别很大的语言。  
   
   假设VB变化的只是语法特色(这已经够厉害的),那么如果VisualFoxPro现在成为.Net语言,其标志性功能的损失一定比VB更多!我们认为:这其中最不能让大家容忍的就是:VisualFoxPro的数据引擎和数据处理手段将损失殆尽,说实话我们中多数人使用VisualFoxPro就是看中了它在数据处理上的无与伦比优势。.Net语言使用公共运行库(CommonRuntime Language),数据库方面的功能是通过外挂ADO等组件完成的。在技术不成熟的现在,让Visual FoxPro运行在CLR上,势必只有三种选择:取消VisualFoxPro的数据处理组件,让它使用组件处理数据;把Visual    FoxPro的数据引擎加入公共运行库;VisualFoxPro的数据引擎做成一个组件。可见这三种选择没有一种是合理的,即使成了,那么Visual FoxPro也就成为了一个四不像的东西。
但自从FOXPRO 独立出来后,微软一直没有停止对它的开发,甚至开发速度要超过其他语言,相继7.0后又有了8.0,9.0,现在出现了9.0 SP1,可见微软对它的重视. 

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多