仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 531|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:熟悉VF--Visual FoxPro 座谈

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:38:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用visualBOE.COMArticleResourceNewsLinksAboutUS

文章题目
VisualFoxPro座谈
作品来历
BOE数据收集事情室
创立日期2001年02月23日
最初更新2002年07月21日
笔墨数目约22000字
作者姓名陈纯

译者姓名原创作品无译者
版权声明版权属于BOE数据收集事情室
相干下载--
细节形貌作为市场上最天真和功效最壮大的数据库办理体系,VisualFoxPro具有久长而光辉的开展汗青。它始创时是FoxSoftware公司的FoxBASE产物,“Fox”(这是国际编程界对她的称号)一种牢靠、便利和高效的程序员用的数据库产物而名噪一时。天下上没有一种产物像VisualFoxPro那样运转,她是举世无双的!

目次

媒介
VisualFoxPro是甚么
VisualFoxPro已过期了吗
面向工具与面向历程之争
面向纪录与面向汇合之争
产物定位招致VisualFoxPro变更不容易为人们感到。微软要把VisualFoxPro作为三层构架(或是多层构架)的两头层开辟工具
VisualFoxPro只能范围于桌面使用程序的开辟吗
不要觉得VisualFoxPro是“低端产物",不管从数据库(DBFBase)品德仍是开辟情况评价VisualFoxPro,它都是一个“高端工具”
VisualFoxPro的言语看上往蛮难的
OOP不但是指“面向工具”的开辟情况,更是一种开辟头脑、开辟手艺,VisualFoxPro在后者上做得更好
VisualFoxPro的界面才能真的很差吗
VisualFoxPro与OLEDB、ADO
VisualFoxPro是一种汗青久长的产物,良多用户是从FoxBASE到FoxPro到VisualFoxPro,如许一步一步过去的。汗青的沉淀多了,汗青的累赘也重了——很多程序员常常捉住老产物而忘了深切研究新产物的新特征,这是一种悲伤
VisualFoxPro与其他开辟工具的对照
VisualFoxPro从VisualStudio平分离出来了
我们得到了甚么
VisualFoxPro与.Net
客不雅上,有益于VisualFoxPro的开展
自力面临应战
VisualFoxPro7的特征
巨好的开辟情况
数据库事务
XML与WebService
COM和COM+
InstallShieldExpressForVisualFoxPro
VisualFoxPro7SP1
我们的VisualFoxPro8
已看到的VisualFoxPro8的新特征
微软对VisualFoxPro8的定位
VisualFoxPro8不会是.Net言语
我对VisualFoxPro8的希冀
选择VisualFoxPro
媒介

这篇文章能够说是BOE数据收集事情室的开山之作了。它的开工是从2000年国庆节入手下手的,写写停停,直到那年的夏历春节才完成初稿……
厥后我有几回修正,算在2002年4月的这个版本,应当是第四版了!
现在,我写这篇文章的念头是:僻静的表达我的概念。作为一位VisualFoxPro的程序员常常遭到他人的质疑、乃至是批判、奚落,我不是一个善于口舌争斗的人,更不敢冲克“公愤”。因而我就用键盘连续敲击一些笔墨,表达我对VisualFoxPro的熟悉,同时表达对各种成绩的意见……
近两年来,就我自己来讲产生了良多变更:因为事情的干系,我打仗了良多其他的开辟工具,个中有人人广为熟习的Delphi,也有国际不见经传的RapidPlus、InTouch、InSQL、InTruck。体味过各种、履历过很多,我以为我更有才能完成此文了,我但愿站在公平的态度上对待VisualFoxPro,而不是社会上一味的品评、鄙夷,更不是FoxFans的“世界我是老迈”的心态!但愿人人能在文章中感应BOE的成熟和前进。
网友们出格喜好这篇文章,我晓得Fox的Fans能在此处失掉共识,实在我写这篇文章也就是要把平常人人体贴的话题总结归结一下,往粗取精、披沙拣金……
客岁春季VisualFoxPro7就正式刊行,很多多少狐友都在守候简体中文版,很遗憾的是,微软并没有汉化它。我以为,没有任何须要利用简体中文版的VisualFoxPro7,缘故原由云云:功效上讲,中文版与英文版完整不异;VisualFoxPro7的IDE与之前版本没有甚么区分,以是关于熟习VisualFoxPro的用户来讲,利用上不会有任何停滞;再就是Help文件,VisualFoxPro7自带了一个完全、自力的英文版的,而中文VisualFoxPro6的Help是集成在MSDN里的,伟大非常,实在也没怎样汉化,一样平常的FoxFans都不装的,以是就匡助来讲,关于不熟习英语的伴侣来讲,英语VisualFoxPro7与中文VisualFoxPro6是一样的;VisualFoxPro7从各方面来讲,均非VisualFoxPro6可对比的,晋级开辟工具是一定的。以是,但愿列位,晋级到VisualFoxPro7吧!

VisualFoxPro是甚么

作为市场上最天真和功效最壮大的数据库办理体系,VisualFoxPro具有久长而光辉的开展汗青。它始创时是FoxSoftware公司的FoxBASE产物,“Fox”(这是国际编程界对它的称号)一种牢靠、便利和高效的程序员用的数据库产物而名噪一时。天下上没有一种产物像VisualFoxPro那样运转,它是举世无双的!

很多人在享用了VisualFoxPro的服务后却说不清它是甚么。就让我们沿着它的开展轨迹懂得懂得它吧!这会使您能对它有更深入的熟悉。

FoxPro从属于一种名为Xbase的DBMS种别。Xbase这个术语很罕见,他暗示诸如FoxPro、dBASEIIIPLUS、dBASEIV、FoxBASE+和ARAGO的言语。Xbase最后劈头于一个年夜型机利用的DBMS,这个DBMS叫做JPLDIS(放射推进实行室数据库办理和信息检索体系)。这个DBMS是由美国人JebLong在1972年开辟乐成的。到今朝为止全球的开辟者和程序员已编写了几万万行的Xbase代码。

追溯到80年月末,FoxBASE是dBase的克隆体系。只需是dBASEIII能做的事情,FoxBASE就可以做得更好更快。FoxBASE固然具有某些全新的特性,但它并没有真正严重的手艺冲破,只是为了运转得更快更好,而更主要的是它与dBASEIII兼容。

FoxPro1.0起首背叛了与兼容的准绳。它入手下手在图形用户界面的计划和软件开辟办法中接纳一些新的思绪,从而使它抢先于事先年远景已不妙的dBASEIV。

从2.0入手下手,FoxPro才真正构成了它本人的特征。当FoxPro2.0推出时,它包括了多少项关头手艺,给PC数据库开辟市场带来了反动性的变更。这些手艺是:

到场了Rushmore手艺,它能处置很多不可思议的庞大事情。俄然之间,带有以百万计数的纪录的表格在PC数据库体系中不但成为大概,并且能够十分简单地加以完成,无需转用其他对照高贵的手艺;Rushmore最主要的长处在于它是完整主动化的,不必用户消费精神和工夫。由于有了Rushmore手艺,再加上Fox生成的疾速,即便在明天VisualFoxPro仍旧是最快的桌面数据库引擎。

SQL语句是FoxPro2.0推出的另外一项具有反动性意义的关头手艺。Fox的开辟职员初次用单一语句代替了全部程序历程,而且这类撑持是内含于Fox数据引擎当中的。SQL言语已经而且如今仍旧是壮大的数据言语。
FoxPro2.0还推出了某种所见即所得的开辟报表和屏幕的工具。


FoxPro2.0的确具有了我们明天的VisualFoxPro具有的一些杰出的功效。GUI计划服务、SQL和极快的数据会见,是它分明的特性。

FoxPro2.5有forDOS、forWindows版,不外谁人Windows版只是具有看上往像“Windows”的DOS使用程序的表面。出格是谁人DOS下的版本相对是典范之作,察看身旁是否是另有良多如许的体系在运转着?事先有人如许评价:这个软件已没法再快了,除非硬件晋级……

直到1995年春季VisualFoxPro推出时,才呈现了FoxPro的又一次严重改善(这时候Microsoft已收买了FoxSoftware公司)。VisualFoxPro3.0增添了一些人们瞻仰已久的特征,使PC数据库开辟界年夜为震动。我们能够看到:VisualFoxPro与FoxPro是由很年夜不同的,不要再把VisualFoxPro成为FoxPro了。这些特征是:

数据库容器(DatabaseContainer),也叫DBC,它增添了开辟职员多年企望的对存储历程的撑持、与表格相干联的数据划定规矩和一系列的附加数据功效。

远程数据的无缝毗连。谈到毗连远程数据的处置,人人常常会想到RDO、ADO、BDE等处置数据引擎,那末VisualFoxPro使用甚么完成远程数据的无缝毗连?VisualFoxPro自己的数据处置引擎,这和其他任何开辟工具都是分歧的!VisualFoxPro数据处置引擎经由过程ODBC驱动程序与远程数据库服务器“通话”,远程数据库服务器的ODBC驱动程序能将VisualFoxPro数据转化成可由他们注释的数据;相反,VisualFoxPro的ODBC驱动程序也能将远程数据转化成可由VisualFoxPro数据引擎处置的数据。可见,只需远程数据库有ODBC驱动程序,就能够用VisualFoxPro最为客户端软件。罕见的SQLServer、Oracle、Access等数据库都供应ODBC驱动程序。

在VisualFoxPro中实践操纵远程数占有两种办法,远程视图和SPT手艺。视图(View)是可更新的SQL光标,增添了一整套的数据会见办法,用于数据处置、GUI显现和报表制造。它撑持两品种型的视图,即当地视图和远程视图。当地视图是基于VisualFoxPro表格的视图,远程视图是基于任何ODBC数据源的视图。别的为了使VisualFoxPro成为完全的C/S开辟情况,除视图以外VisualFoxPro还撑持SPT(SQLPassThrough)手艺来完成视图没法完成的事情,好比数据库服务器的用户办理、存储历程挪用等。View与SPT手艺的发生后,VisualFoxPro就成为会见远程数据的次要工具。从整体来看,创立全部企业局限内的使用程序和利用存储在远程数据源中的数据,几近与利用VisualFoxPro表格自己一样简单,处置在数据存取时增添了一些命令、函数,数据处置与一般的VisualFoxPro编程没有任何区分。再次指出:RemoteView与SPT手艺是由VisualFoxPro数据处置引擎间接撑持的,这与在VB、VC++中的内部数据会见手艺分歧(他们利用组件,如:DAO、RDO、ADO……),以是用VisualFoxPro会见远程数据的效力很高,并能把远程数据与当地数据完善的交融在一同,最年夜水平地进步开辟效力和程序运转效力。

完整撑持面向工具手艺(OOP)。充实而强健的完成了面向工具的处置体例年夜年夜改良了软件开辟前提。强健的工具模子和创立你本人的类及子类的所用的功效,构成了一种全新的软件开辟手腕。


VisualFoxPro5.0是3.0的晋级版本,它是一个32位的体系。具有了利用和创立COM服务器的功效,并入手下手撑持在Internet上公布VisualFoxPro。从这个版本入手下手,VisualFoxPro进进了Visualstudio家属,而且VisualFoxPro将不再晋级的流言也是在这个时代呈现。

在VisualFoxPro6.0呈现之前,微软企图推出DNA,演变到明天就是.NET,并答应把VisualFoxPro开展成强健的两头层工具,以是这今后VisualFoxPro的变更低级用户就不太简单感到了。

VisualFoxPro6.0也没有基本上的变更,不外有些变更仍是相称分明的。Access和Assign这两种办法在把持放进你的工具中的数据方面很有创意。使用新的ComponentGallery(组件库)和FoundationClasses(基本类),你能很简单地转向创立面向工具的使用程序的事情。对COM撑持的更好,在ServerPack3后我们能够用VisualFoxPro创立多线程的COM组件。

VisualFoxPro7是Fox第一个可视化版本——VisualFoxPro3今后的最具有反动意义的一次产物晋级换代。关于它的特征,稍候本文会有专门段落解说。

VisualFoxPro的言语是由Xbase、SQL、OOP组成的。我不晓得如许分化是不是公道,我只是从FoxPro的开展汗青得出以上结论的。实在以上三者在VisualFoxPro完善的交融在一同了,已与VisualFoxPro血脉相连、不成支解,良多语句、函数很难辨别它属于哪一个门类(也没需要)。再者Xbase这一叫法也不非常妥善,如许简单让人误解,仿佛VisualFoxPro的言语是没有开展的“逝世言语”、是十几年前的“老古玩”,实在在FoxPro每次晋级中(如今已经是VisualFoxPro7)城市对这部分言语举行订正、补充。我看仍是如许:VisualFoxPro言语就叫它:“VisualFoxPro言语”,它既分歧于任何故往的Xbase(最多有汗青渊源),也分歧于别的的编程言语。这就象Delphi那样,是ObjectPascal言语,不是之前的Pascal;VB就是VB,不是之前的Basic。

从Fox进进可视化的时期后,对COM手艺的撑持一向是VisualFoxPro在已往、如今、未来精益求精的中央。面向工具程序计划(OOP)的最年夜的优点就在于代码的反复利用。但是,OOP只是一种办理代码反复利用的一种优异的计划(solution)。纯真使用OOP手艺不但请求一切工具都必需用一种言语完成,而且你还必要失掉原程序代码嵌进使用程序(就像我们在VisualFoxPro开辟利用Class那样)。假如工具是有你或你的公司完成的这些大概不是甚么成绩,但假如工具是由其别人或其他公司写的这就是成绩了……再者为了节俭资本我们常但愿把一工具放在远程的盘算机上供很多使用程序利用,如何复杂、平安完成这个义务呢?看来,单有OOP是不可的!因而微软提出了ComponentObjectModel(COM)手艺,有了它我们就不必要把工具源程序嵌进我们的使用程序中,就能够利用其他言语开辟的工具,就能够散布的利用工具了。

COM手艺供应四种分歧的特征,VisualFoxPro撑持一切的COM特征。

ActiveXdocuments同意用户在一个使用程序中编纂另外一个使用程序的document。我们把Word文档嵌进或链接到VisualFoxPro中,就能够不分开VisualFoxPro编纂Word文档了。

ActiveXcontrols为开辟职员供应了增添的体系功效的办法,典范的使用就是各种ActiveX控件的利用来增强用户界面。这里要申明的是VisualFoxPro不撑持(7.0也不撑持)“集装箱式的”ActiveX控件,好比Coolbar控件。

Automation同意用户在一个使用程序中利用别的一个使用程序或组件,典范的使用就是VisualFoxPro与Office的OLE-Automation使用。

RemoteAutomation大概称DistributedCOM(DCOM)与Automation手艺差未几,只是它撑持组件的散布,这就是微软的散布式使用计谋。


VisualFoxPro不撑持Activecontrols(ActiveX)的开辟,但撑持servercomponents的开辟,也就是在Automation、RemoteAutomation中利用的组件都能够用VisualFoxPro来开辟。VisualFoxPro的这类才能是从5.0入手下手具有的,到了6.0的SP3已能够开辟出多线程的组件了,这些在上文已有过叙述。今后的VisualFoxPro版本必定会对Automation,出格是RemoteAutomation有更好的撑持,不管是开辟servercomponents,仍是由VisualFoxPro充任客户程序。

综上所述,VisualFoxPro是创立关头义务的、企业局限的、面向工具的单条理、双条理、多条理使用程序的主要开辟工具,这些使用程序能够在当地或环球局限内举行设置。
VisualFoxPro已过期了吗

恕我婉言,如许的成绩我真的听腻了。这个成绩我听了好几年了。从流言呈现到明天VisualFoxPro的版本已生了两次变更,就是VisualFoxPro6.0与2001年春季推出的VisualFoxPro7.0。依据微软的官方动静,VisualFoxPro8(多是这个称号吧)已在研发当中了。我不敢包管是不是会有VisualFoxPro9.0(这就像我不敢包管微软是不是在当时还存在一样)。能够如许以为,只需不出不测情形(好比微软开张、业界产生了严重的厘革等),Fox就会安稳地开展!

在外洋,一个程序员、一家公司把他们利用的开辟工具视作一项投资,作为VisualFoxPro的开辟厂商微软公司就必需回护客户的投资权益,这是很基础的贸易准绳,微软相对不敢随便减少有着50万用户的Fox,除非永久不想赚这50万用户的钱了。

为何会有VisualFoxPro要减少的传说风闻呢,我不是很分明。但这两年微软对VisualFoxPro的不宣扬立场倒是为这股流言起到了火上加油的感化。别的VisualFoxPro的确是一个简单引发误解的产物,低级用户很简单对它发生“不怎样的”评判,因而加上那流言就发生了“VisualFoxPro就真的要减少了”的幻觉了。

为何说VisualFoxPro是简单引发误解的产物呢?我总结以下几点缘故原由:

面向工具与面向历程之争

我们说VisualFoxPro是面向工具化的言语,是有依据的。面向工具化的言语必需具有四个特征:笼统(Abstraction)、封装(Encapsulation)、承继(Inheritance)、多态(Polymorphism)。对比一下VisualFoxPro,是否是撑持这四年夜特征!

固然,VisualFoxPro与C++和ObjectPascal一样都是汗青久长的言语,以是言语中有良多面向历程的语素。我晓得良多黉舍在教授教养中,只是教训先生们利用VisualFoxPro的面向历程的言语特征,而无视了面向工具的教授教养,一样的成绩也存在于宽大的VisualFoxPro程序员中。我们必需分明:不克不及由于我们没有利用VisualFoxPro面向工具的壮大功效,而说VisualFoxPro不是面向工具的言语,这就像不克不及由于世界雨、没有出太阳,而说太阳被天狗吃失落了——何等的稚嫩好笑!

我们晓得VisualFoxPro对数据的操纵相沿了多年来的面向历程的做法,这与如今盛行的开辟工具有很年夜的分歧。我以为,微软如许做是有它的事理的:

第一,面向历程的数据处置,更能发扬XBase言语系统的天真与随便的特征。这一点,你用过其他的数据库开辟工具,然后再用用VisualFoxPro就分明了。

第二,不间接供应面向工具的数据处置组件,不代表不同意用户封装本人的数据处置组件。良多优异的Fox程序员,城市本人封装专门数据处置组件,这才是VisualFoxPro编程的崇高地步!

面向纪录与面向汇合之争

依据笔者的浅陋认知,干系型数据库处置能够分为面向纪录操纵和面向汇合操纵。

各类开辟工具撑持的客户端光标系统就是面向纪录操纵的,它们撑持纪录之间的相对定位,更分明地说就是能够在纪录之间导航,诸如:SKIP、GOTOP之类的语句。VisualFoxPro无疑是此道的相对妙手,20年的言语开展,会萃了大批面向纪录的言语要素。这是由于如许,我们才会重复夸大:VisualFoxPro的Cursor系统天真、壮大!

各种年夜型数据库,如Oracle、SQLServer是面向汇合处置的代表,看看正统的SQL言语,相对没无数据导航之说,数据纪录之间是同等的,统统都要讲干系、摆前提!

跟着手艺的开展,人们入手下手注重到,不克不及支解这两种对数据的操纵体例,因而年夜型数据库撑持了游口号素,Fox也撑持切合标准的SQL言语。

产物定位招致VisualFoxPro变更不容易为人们感到。微软要把VisualFoxPro作为三层构架(或是多层构架)的两头层开辟工具。

甚么是三层构架呢?第一层是用户界面:它包括了用户界面,让利用者输出,输入,查询等事情;第三层是材料层:它就是用来放材料的中央,通常为指后端数据库,次要有包含Oracle、SQLServer等,它次要是供应一个很年夜的中央,来有划定规矩的寄存数据;第二层是商务逻辑层(两头层):有人要说了:存取材料,间接从第一层跳到第二层可不成以?固然能够,没有人划定不克不及走捷径,并且从数据库间接抓材料,既快又好,那为何弄出个第二层呢?

商务划定规矩是常常变更的,好比下班从8点改成10点,那电脑怎那末晓得老板由于不景气少让人人上二个小时班呢?它必定没法晓得,你必需告知它,这时候成绩就来了,假如你有良多部电脑,比方:100台,你就得一部部换新程序。假如这是一个挂在Internet上的收集程序,岂非总让用户download新程序不成?

更主要的是,在大批客户存在的情况里,传统的两层构架基本没有才能承当伟大的事情压力,必需经由过程某种两头体系完成压力均衡,这就是两头层的另外一妙用!

两头层是没有图形界面计划的代码编写,而且是OOP体例的代码编写,不但要熟习背景数据库的特征,还要思索前台界面工具的特征,最主要的是商务逻辑的构架,同时还请求明白IIS、MTS(COM+)、NT的平安设置等庞大单调的器材。风趣的是,最近几年来VisualFoxPro的各类改善,更多的是在这些方面下工夫,到了最新版本的VisualFoxPro7更是在此方面增添了多少特征,上面就让我用四个成绩来讲明VisualFoxPro在开辟两头层方面的奉献:

成绩一:VisualFoxPro能开辟出不乱、无效率的Server程序吗?能,在1999年公布的VisualFoxProSP3中微软付与了VisualFoxPro开辟多线程历程的内组件的才能,并增添了新的运转时候库VFPnT.DLL(n代表版本号),撑持其运转,在这个运转库中,删除大批老式的和界面把持元素,使得它更玲珑。可是因为VisualFoxPro6自己不是很不乱(加打SP4或SP5才有所改良),以是这个很棒的功效在VisualFoxPro6下其实不能充实发扬,直到VisualFoxPro7呈现才使它的显现出好汉本性!

成绩二:散布式的事件、静态负载均衡怎样完成?VisualFoxPro7对COM+有很好的撑持,借由COM+就能够办理这两个成绩了!

成绩三:作为Server程序,客户程序如何与Server互换数据汇合?这是VisualFoxPro6开辟的Server程序的致命缺点,我们晓得VisualFoxPro是用来处置数据的,但不克不及与外界自在互换数据汇合会年夜年夜下降开辟、利用和程序运转效力!在VisualFoxPro7里我们XML就能够疾速、容易的传送年夜型数据汇合,真正做到数据集的往复自在。如今回忆VisualFoxPro6中我们用的那种“轮回+属性”的做法,真有天上与人世的感觉!

成绩四:能不克不及让VisualFoxPro开辟的Server任由客户利用,叫干甚么就干甚么?能够的,在VisualFoxPro7里供应了一个全新的函数:ExecScript()。有了它,就能够一次实行多条客户端送来的切合VisualFoxPro标准的语句:你能够界说变量、做查询、更新数据、修正表布局……

微软的确理论着让VisualFoxPro在两头层运转的答应。但遗憾的是:因为国际用户的程度、国际软件使用的范畴,对年夜多半FoxFans没法感觉VisualFoxPro一日千里的变更——对他们来讲,VisualFoxPro的确“没有改动”!

VisualFoxPro只能范围于桌面使用程序的开辟吗?

手艺在前进,软件手艺的使用不休在拓宽,Internet已是浩瀚开辟工具竞相撑持的使用范畴。VisualFoxPro从版本5入手下手不休扩大对Internet的撑持,到最新的VisualFoxPro7更是增添了对WebService的撑持。我们能够把VisualFoxPro对Internet的撑持分为三年夜部分:

第一,复杂的HTML的转换。VisualFoxPro自带的“Web公布”就是这范例的工具,使用HTML和DHTML的模版,撑持VisualFoxPro数据的Web化,这是一种全静态的Web撑持。

第二,合适于企业外部利用的ActiveDocument手艺。是否是但愿疾速、复杂的把VisualFoxPro使用程序变化为Web使用程序,这个ActiveDocument手艺就是最好的选择。它撑持App程序运转在IE中,它的弱点是:在客户端必需安装VisualFoxPro的运转库、客户端与数据库间仍然是严密的有形态的干系,属于F/S构架——只是界面可以运转在IE当中了。它的开辟疾速和它仍然基于传统构架,决意了这个手艺只能运转在企业外部,一样平常不克不及在广域收集中公布。

这手艺是VisualFoxPro6提出的,事先在Tool菜单里另有一个专门的菜单项。到了现在的VisualFoxPro7,这个菜单项已作废了,但并非说VisualFoxPro7不撑持ActiveDocument,只是这类其实不杰出的手艺没有需要再放在夺目的地位了。

第三,基于COM的Web使用。

VisualFoxPro真正能被用于Web开辟,就是经由过程COM撑持的。

这里您要有个熟悉,作为数据库开辟工具,VisualFoxPro不是FronPage如许的用于开辟Web界面的工具(大概将来的VisualFoxPro会撑持Web界面的开辟)。VisualFoxPro完整是作为Server运转在网站的背景,为各类使用供应服务。利用VisualFoxPro编写的COM组件可以被IIS撑持,压在背景举行各类运作——这就是真正意义上的VisualFoxPro的Web使用,也是典范的多层构架的两头层!

这个阶段,VisualFoxPro对Web的撑持有能够分别为三个条理:

FoxISAPI。
这是开始退场的手艺,昔时ASP手艺还没有呈现的时分,我们在IIS里就能够经由过程ISAPI手艺完成静态网页开辟。

WebServer
ASP手艺呈现了,我们晓得ASP手艺的一年夜特征就是撑持服务器真个组件的使用。用VisualFoxPro的编写的COM组件就可以运转在IIS里,供ASP挪用。

WebService
这是VisualFoxPro7的新特征,也是以后最抢手的手艺。它与WebService的最年夜分歧就是:WebServer组件只能经由过程ASP程序挪用,而WebService能够供任何体系在环球局限挪用,不管客户真个硬件平台、软件平台,只需它撑持SOAP、撑持XML就能够了。
更夸大一点说:只需能上彀,就能够享用WebService供应的服务!


有人大概会问:我能够用VB、VC++创建工具组件时,为什么我要用VisualFoxPro来创建不异的组件?微软对这一成绩有专门的批评,粗心为:快、反复利用性、跨言语反复利用性。“快”是指用VisualFoxPro开辟的组件撷取、处置材料都极其敏捷,而且VisualFoxPro可以十分敏捷的创建字符串。究竟有多快,我想数据处置、存取的速率人人平常都领教过了,字符串天生速率我这里有个数据无妨一看,这是台湾的一名妙手做的实验——将1M的数据写进文本中,了局VC++6.0程序用了3.5秒、VB6.0程序用了11秒、Java1.1.5用了24秒、VisualFoxPro6.0用了7秒;“反复利用性”是指VisualFoxPro具有OOP的功效;“跨言语反复利用性”是指VisualFoxPro编写的工具编译今后成为COM、COM+工具组件,如许就能够在其他言语中利用它了。

不要觉得VisualFoxPro是“低端产物",不管从数据库(DBFBase)品德仍是开辟情况评价VisualFoxPro,它都是一个“高端工具”。

很多人以为VisualFoxPro只能用来开辟单用户体系或是文件服务器构架的小型收集体系——这是错误——这类蒙昧的行动在很多讲C/S、三层构架的书中都有(出格是一些VB、PB、Delphi的数据库编程书)。我能够很卖力任的告知人人完整能够用VisualFoxPro开辟C/S布局的体系。这里说的C/S构架相对是正宗的,不是用甚么F/S构架在乱来人人。在C/S构架中我们经常选择VisualFoxPro作为客户端开辟工具,以Oracle、SQLServer等收集数据库压在背景,利用VisualFoxPro内置的RemoteView和SPT手艺,如许就能够完善地办理成绩。这里不克不及具体睁开,只出格先容VisualFoxPro的当地引擎在开辟中的感化。VisualFoxPro的当地引擎出格壮大(上文我们说过处置百万笔记录不费吹灰之力),我们在计划体系时能够非常复杂的将远程数据与当地数据分离,很复杂、很无效地把持收集数据流量、进步体系事情效力(我看过很多VB、Delphi、PB的书,他们很少在如何把持收集数据流量、进步体系事情效力叙述,不知是嗤之以鼻,仍是其他甚么缘故原由)。

我以为VisualFoxPro的当地引擎在C/S构架下最少有三项巨大的用处。其一:非常常变化数据的当地存储。我国的邮政编码与区域的干系是绝对不乱的数据,并且数据量也不是太小,我想总有上千个纪录(我没细心考查过详细情形),我们把这些信息存储在客户真个盘算机中,就能够在利用邮政编码及其相干信息时从当地失掉数据,如许能使高体系效力同时节俭收集资本(这是C/S开辟的主要准绳),只在邮政编码产生变更时在服务器上一致更新,下载更新客户机上的数据。假如用其余软件完成一样的功效,相对比VisualFoxPro贫苦并且效果相对不及VisualFoxPro,这由于VisualFoxPro的数据引擎间接撑持远程数据读取,能很好的交融当地数据与远程数据;其二:离线数据包。单元里总有人出差,在万万里路以外能不克不及拿着条记本为客户发定单、与客户签条约,就像在本人的办公室一样?当他回到公司时只需把条记本连到服务器中,发送更新就好了。VisualFoxPro的离线视图是经济且高效平安的计划(固然您可使用远程拨进或建一个Web网站,这些VisualFoxPro大概干)。实在离线数据包另有一个主要的功效:当下载的数据是大批的(除非万不得已请不要如许计划体系),这类情形下利用离线视图能够数据集主动转化为物理表,充实使用VisualFoxPro的高速与天真,完成后连线更新后端数据源——统统都很复杂。我以为:离线视图相对是VisualFoxPro在C/S体系中的一个卖点,固然ADO也撑持相似的器材,但一定不及VisualFoxPro无效率;其三:数据驱动。您是不是晓得,VisualFoxPro中尽年夜多半文件格局实践上都是DBF文件,如DBC、SCX、FRX等,他们都能够由VisualFoxPro的当地引擎驱动完成庞大的义务。在计划C/S布局时假如要存储用户设置、自界说文件格局,用VisualFoxPro的当地引擎协助相对比其他软件复杂,由于你用的是换汤不换药的办法,但它复杂、无效率。

VisualFoxPro开辟C/S体系时,最不同凡响的特征就是对远程数据的操控是经由过程当地数据库来完成的,RemoteView、Connection都作为当地数据库的工具被办理起来,完善的跟尾当地数据与远程数据。这类在客户端创建远程数据逻辑的做法,与最新的ADO.NET有类似的地方!

在三层构架中,VisualFoxPro能够充任恣意一层的义务,但自己觉得年夜中型体系的数据库部分应以收集数据库为主。客户端界面用VisualFoxPro也是能够的,但一样平常限于企业外部,在Internet上我们一般利用IE作为客户界面。在三层构架中VisualFoxPro最胜任两头层的开辟,它复杂(开辟难度与一般的VisualFoxPro项目相差不年夜)、疾速的字符串天生、撑持COM手艺、它撑持(MTS)COM+手艺、它撑持XML(VisualFoxPro7.0供应3个与XML有关的函数)、它具有壮大当地数据引擎、天真的数据处置体例、它撑持多线程的服务组件的开辟。

大概有人要问:用ASP+剧本言语一样能够开辟Web体系,何须加其中间层。切实其实,今朝在市情上与多会商Web的书都间接利用剧本言语来开辟全部体系,这是非常不准确的做法,乃至有写书还说硬件愈来愈快,因而利用剧本言语来开辟全部体系并没有甚么干系。会说出如许话的作者一般都是没有实践开辟Web使用履历的人。剧本言语,如VBScript是一种注释性言语,运转效力很低,他们只符合作为胶水程序。开辟Web体系正统的做法是:把使用逻辑编写成COM、DCOM工具,然后用大批的剧本言语来驱动/利用这些工具。如许体系开辟时事情量会年夜一些,但它切合开辟任何数据库使用程序的最基础的准绳:分别使用逻辑与用户界面。如许体系就会变的简单保护了——你能够常常变更那些胶水程序来改动Web页面,使用逻辑变更时你又能够改动某一个逻辑工具,而不必为混乱且干系庞大的代码忧愁。再者,因为VisualFoxPro是高效、天真的数据处置言语,任何贸易逻辑都能够用它来代码化,而且您能够取得几十倍乃至上百倍于ASP+剧本言语的运转效力,和更加健旺的实行效果。

VisualFoxPro的言语看上往蛮难的。

人们在歌颂VisualFoxPro一直是表扬他的易学易用,我分歧意这类概念(我不晓得他们站在甚么态度上措辞)。我看成绩的角度是“成为一位还过得往的VisualFoxPro程序员”,我的结论是VisualFoxPro作为一个开辟工具并非勤学的。这不是说VisualFoxPro的语法、观点像C那末繁复,而是指:即便是复杂的使用,也要把握良多VisualFoxPro的观点、语法、函数,大概还要较深切懂得OOP——常常让人摸不到深浅。好比,拿数据库体系最主要的功效——查询来说,VisualFoxPro就“名堂单一”。我曾统计过,不算“List、Browse"等交互式命令,VisualFoxPro最少撑持4条命令(Find,Seek,Locate,Select-SQL)、3个函数(Lookup(),Seek(),Indexseek()),(固然个中有的已减少)这些命令的关头字、函数的参数浩瀚,有的请求索引,有的能够用索引但请求优化索引……而这在VB、Delphi中相对就只是两三个办法的事变。从下面的例子中假如您只看到了VisualFoxPro的冗杂,那末您就完整错了:在VB、Delphi完成查询功效的道理与VisualFoxPro应是一样的,但他们封装了很多环节,而VisualFoxPro就把很多器材更低阶(固然不如VC++那末低条理,可是已比利用工具的言语难多了)的展现给我们,以是VisualFoxPro的开辟者常常比利用其他的开辟工具开辟者更会思索、更明白的数据库开辟的真理,由于工具强制他们朝这个偏向勉力……

用VisualFoxPro有助于进步程序员对数据库观点的了解。很多在VisualFoxPro程序员中不是成绩的成绩常常成为那些利用工具处置数据的程序员的恶梦。好比在VisualFoxPro中数据缓冲、事件处置都是主要的观点(现实上要干活就必需懂得这些器材),在其他开辟情况中一味夸大便利疾速常常无视程序员的基础观点培育,编出的器材要末效力不高、要末老出成绩。念书人都明白:基础观点、基础实际是命脉,这就是VisualFoxPro带给我们的优点。

风趣的是VisualFoxPro繁、难也就到这个水平了,他的进修难度曲线是一切言语中最安稳的——不像在有些言语中,基本开辟非常简单,一旦深切却难度很高。在VisualFoxPro中低级使用、中级使用、初级使用的难度差别很小——就是那些素昧平生的语句、易于了解的函数。VisualFoxPro的这类初级使用不太难,低级使用不非常简单的特征,对初进门者来说是没法体味个中的妙处的,这就形成了VisualFoxPro的不太友爱抽象;

同时,VisualFoxPro的难度却带来了良多的优点(前文我已谈了良多),VisualFoxPro比其他言语在数据处置上更疾速、更天真,数据处置体例更多、更完整。假想一下用VisualFoxPro开辟数据工具时,我们可使用丰厚多彩的语句、函数,完成非常庞大、千变万化的功效,用其他言语开辟数据工具,它们的功效只能是创建在已有的数据工具的功效之上(这叫承继),变更就少了,功效就弱了。假如要完成VisualFoxPro的Xbase+SQL那样天真、壮大的功效生怕要利用底层的API了——这太可骇了!

OOP不但是指“面向工具”的开辟情况,更是一种开辟头脑、开辟手艺,VisualFoxPro在后者上做得更好。

我们讲过VisualFoxPro完整撑持OOP的开辟,但风趣的是在数据处置方面,微软实践上没有供应甚么现成的工具(FFC是VisualFoxPro6.0才有的,且封装性、顺应性都不尽善尽美),这一点我不知是VisualFoxPro的福分仍是祸患。说“福分”这将强制程序员把握这门其实不太复杂的手艺(大概用“头脑办法”更得当),而不是复杂地利用工具。OOP关于两头层的开辟来说是很主要的,由于COM组件必需是创建在OOP头脑上的,要开辟这类组件就必需把握OOP手艺;讲“祸患”这使VisualFoxPro变得不容易于进修和利用了(就我团体而言,真正体味到“用VisualFoxPro应会体例数据处置工具”这一成绩也是在利用了VisualFoxPro好长工夫以后的事变了)。现实上如今良多中伤打击VisualFoxPro的人都没有深入的熟悉这一成绩——他们只感应VisualFoxPro用起来不及Delphi、PB、VB简单,但他们从不想该如何开辟数据处置工具,到编写COM组件时就要他们的命了。那些“精英们”年夜多不懂OOP,他们只懂“点”操纵标记——似乎工具的利用就是OOP,他们有甚么资历来品评我们呢?

VisualFoxPro的界面才能真的很差吗?

我以为作为数据库体系的开辟工具微软为我们供应的那些内置控件加上十几个附送的ActiveX控件已够用了。

我们会商VisualFoxPro控件应从两方面动手,第一就是界面美妙成绩,再就是数据处置、剖析是不是便利。良多人很在乎的前一个成绩,我却是不觉得然——控件未几出格是丑化界面的控件未几其实不代表VisualFoxPro就开辟不出心旷神怡的软件,我的感觉是软件界面的专业化水平、初级其余审美、全体的效果要比一般的界面殊效主要万万倍,实践效果可要好上万万倍。看看外洋用VisualFoxPro体例的程序您就会分明这个事理了;我对VisualFoxPro的不满在于数据处置、剖析控件不全,出格是短少了一批数据剖析控件。好比没有能够与数据绑缚的图表控件、没有能够列示绑缚交织表的表格控件、没有能够绑缚数据的数据透视表格控件……在这个成绩上VisualFoxPro的确应当向Delphi、PB等软件进修,这是我们对将来的VisualFoxPro的希冀!

VisualFoxPro与OLEDB、ADO

ADO是Windows情况下支流的数据存取的办理计划,那些以工具操纵数据的言语基础上都利用ADO完成数据存取,如:VC++、VB、Delphi。在VisualFoxPro的开辟情况中仿佛看不到ADO的影子,是否是VisualFoxPro不撑持ADO呢?ADO实际上是一组COM工具,VisualFoxPro撑持COM,固然撑持ADO。

我以为:VisualFoxPro对ADO的撑持只是停止在较低的程度。这并非说VisualFoxPro限定了甚么ADO的功效(一切功效都能用),而是指:用起来不便利,不像在VB、Delphi中便利。这类不便利次要表现在ADO的Recordset没法与VisualFoxPro的内置控件绑缚。其缘故原由是:VisualFoxPro不熟悉ADO的Recordset,只能将纪录逐条读取,而不是一会儿认得全部Recordset。如许数据就不克不及被绑缚了,同时也不克不及对ADO间接利用VisualFoxPro壮大的数据处置功效(ADO是用来存取数据而处置数据还要靠客户软件)。

就象VisualFoxPro利用ODBC毗连远程数据源那样,ADO经由过程OLE-DB与数据供应者对话。(Bytheway:VisualFoxPro7是OLE-DB供应者,如许就能够经由过程正宗的OLE-DB驱动程序在其他开辟工具中利用ADO存取VisualFoxPro数据了。)

ADO能为VisualFoxPro带来甚么?起首要注重的是:ADO与VisualFoxPro的数据引擎是毫有关系的体系,从某种水平上讲ADO的呈现为VisualFoxPro供应了一种全新的远程数据处置体例。

ADO是多层使用程序中数据汇合传送的最好办理计划。假如我们用VisualFoxPro开辟了一其中间层体系,用VB开辟了用户界面,傍边间层要传送一个cursor到VB的客户端就不成以利用VisualFoxPro的cursor或DBF,由于VB不认得他们。利用ADO的Recordset就能够办理成绩,由于人人都认得他;VisualFoxPro只能经由过程VisualFoxPro7撑持XML后才干填补VisualFoxPro当地引擎在使用程序传送数据集的不敷。

ADO能够存取非干系型数据库。ADO是微软的UniversalDataAccess构架的主将,它能够存取Excel等非干系型数据数据库的数据。经由过程ODBC存取远程数据的VisualFoxPro就无此才能了。可是我利用了ADO存取Excel后很扫兴,由于毗连必需是独有的,以是这类功效带给我们的匡助只是无限的!

ADO能够填补VisualFoxPro在远程数据存取时的不敷的地方。比如VisualFoxPro不认得SQLServer中nText、nVarchar、nChar等数据范例,但ADO能够。


在VisualFoxPro利用ADO存在以下弱点:

VisualFoxPro只能经由过程COM的体例辨认ADO的Recordset,不克不及像表格那样读写它,如许就呈现了两个成绩:Recordset没法与VisualFoxPro的内置控件绑缚;没法间接利用VisualFoxPro壮大的数据处置功效(ADO是用来存取数据而处置数据还要靠客户软件)。

VisualFoxPro中利用代码完成ADO的全体功效,但代码量年夜、誊写贫苦。


看待以上不敷VisualFoxPro开辟小组在VisualFoxPro6推出不久后就公布了一个叫VFPCOM.DLL的组件,能够用它部分化决ADO的Recordset与VisualFoxPro的cursor的转换和ADO事务的绑定,VisualFoxPro更是内置撑持COM事务绑定。在本文的初版中,笔者曾有如许的但愿:“VisualFoxPro更具效力的撑持ADO”。如今我的意见有了一些改动,我以为在VisualFoxPro处置数据,不管是当地、仍是远程数据,不管是甚么构架的体系,最好的办理计划熟悉内置的数据引擎,而不是如今盛行的ADO,如今VisualFoxPro对ADO的撑持水平已充足了!

VisualFoxPro的数据引擎与ADO比拟有甚么上风呢?

VisualFoxPro数据引擎体系资本耗用小,ADO究竟是COM组件要花用更多的资本。

作为体系共用组件,利用ADO大概会在分歧使用体系中发生ADO的版本成绩,这就像我们常碰见的ActiveX的控件版本成绩。

ADO只是数据存取组件,它没无数据处置功效,要处置数据必需利用客户使用程序,如VB、Delphi。VisualFoxPro数据引擎同时撑持数据存取、数据处置,我已屡次夸大VisualFoxPro在这两方面的巨大功效;

ADO没有当地数据库作为壮大的撑持,有必要将远端数据临时寄存在物理文件中ADO相对不及VisualFoxPro。VisualFoxPro的数据库是桌面数据库中最好的,远端数据暂存个中不但便利,并且伸缩性强。

利用ADO从数据源取得数据今后,再要对数据汇合举行分组、查询、汇老是十分贫苦的事变,可是VisualFoxPro撑持对Cursor的数据处置,我们可使用尽年夜多半XBase言语(除ZAP和Pack之类的表保护言语以外),还能够对Cursor实行SQL语句——这类壮大的能力,尽非ADO所能对比。


开辟单机程序时,相对不要利用ADO,如许做既没开辟效力也没运转效力;开辟C/S体系时我们应选用VisualFoxPro的SPT和RemoteView,它们完整能够很完善的办理成绩(已有良多良多乐成履历),不必要舍本逐末地利用ADO;在两头层开辟时,能够思索利用ADO,我们为在此种情形下利用ADO的开辟效力是蛮高的,由于这时候一切的代码都要我们用一句、一句的写出来(在其他开辟情况也一样),VisualFoxPro的语法复杂再加上VisualFoxPro7的极其壮大Intellisense功效(真的很快而且能够由用户自界说),大概我们还会占些廉价的。

固然ADO与VisualFoxPro是完整有关的体系,但他们却有配合的母亲——FoxPro开辟小组,本来ADO的光标集(CursorEngine)是他们开辟的。假如你同时懂得ADO与VisualFoxPro,你会发明ADO的良多思绪与VisualFoxPro千篇一律……我老是拿这个典故压服那些不信任VisualFoxPro的人:最盛行的ADO的光标集是FoxPro开辟小组写的,有甚么来由嫌疑VisualFoxPro的数据引擎——它是天下上最棒的!

VisualFoxPro是一种汗青久长的产物,良多用户是从FoxBASE到FoxPro到VisualFoxPro,如许一步一步过去的。汗青的沉淀多了,汗青的累赘也重了——很多程序员常常捉住老产物而忘了深切研究新产物的新特征,这是一种悲伤。

我碰到很多所谓会利用VisualFoxPro的人,还口口声声叫“QueryDesign”为“RQBE”,伴侣那但是DOS时期的观点了。

良多人不细心研究VisualFoxPro,只是从其他工具中看到某项功效,平空设想就说:VisualFoxPro不撑持的。Delphi中出格指出它有异构数据联系关系才能,好比:父表是SQLServer数据,子表是Access数据,请求创建联系关系,完成“一多干系”。在Delphi请求利用出格的SQL语法来完成该功效。VisualFoxPro的文档里仿佛没出格申明这项功效,是否是没有呢?假如你深入了解VisualFoxPro的远程视图及Cursor的用法,谜底很简单失掉。现实上,用VisualFoxPro能更间接、复杂完成的完成:建两条“毗连”、两个“远程视图”,对子表加索引,Setrelationto,setskipto……

反过去VisualFoxPro能完成的功效,Delphi的BDE(Delphi的当地引擎)却不克不及:VisualFoxPro的远程视图可以将多个表联系关系后的了局集设定为“可更新”,并在数据变化后主动发生Update子句分离更新背景数据。比方:对SQLServer中Pubs数据库创建毗连,新建远程视图为:

CREATESQLVIEWTESTVIEWREMOTECONNECTIONCONNECTION1ASSELECTPublishers.pub_id,Publishers.pub_name,Titles.title_id,Titles.title,Titles.price,Authors.au_id,Authors.au_lname,Authors.au_fname,Authors.phone,Authors.addressFROMdbo.publishersPublishers,dbo.titlesTitles,dbo.titleauthorTitleauthor,dbo.authorsAuthorsWHERETitles.pub_id=Publishers.pub_idANDTitleauthor.title_id=Titles.title_idANDAuthors.au_id=Titleauthor.au_idORDERBYPublishers.pub_id

这是四个表间的干系,算是对照庞大的SQL语句。别忧虑,这统统在VisualFoxPro只不外是用鼠标在“视图计划器”点击几回就好了。在您对视图举行“增加、删除、修正”并发送更新时,VisualFoxPro会举行剖析地智能,发生Update字句分离将变更更新到后端多少个表中。而Delphi的BDE只能对Xbase数据源有此的感化,对其他的数据源都无此功效。VisualFoxPro能够撑持一切的ODBC数据源(只需数据源自己撑持),如:Oracle、SQLServer,Access……固然在Delphi5.X中能够经由过程ADO填补此缺点,但VisualFoxPro一样撑持ADO。VisualFoxPro的程序员要有如许的信念:VisualFoxPro为我们供应了最好的当地引擎!

前人云:欲善其事、必先利其器。以是我们不要求全谴责工具怎样、怎样,多看看本人用好了没有!

VisualFoxPro与其他开辟工具的对照

这实际上是一个很傻的话题,选择何种开辟工具完整是因为程序员的面对的义务和团体的喜欢决意的。只需您选用的工具可以胜任您处置的项目,只需您对开辟工具有充足的成就以对付多变、庞大的事情,只需这个工具还在持续晋级,您就没有来由改换工具,更没有需要搀和到这类无聊的会商中往。

任何工具都有其上风与弱势,产物定位更是各自分歧,每一个程序员都以为本人的选择是最好的,他人都是愚昧的。以下的会商只是无聊的笔者收回的无聊的行动,您年夜可擦过不看。

议论VisualFoxPro,我们必需注重如许一个成绩:VisualFoxPro是干甚么用的。无庸置疑,它是一种数据库体系的开辟工具。我团体以为,到今朝为止在Microsoft公司的一切开辟工具中,VisualFoxPro是开辟数据库使用程序的最好产物。我们必需供认如许的现实:从一入手下手,VisualFoxPro就是为处置数据而计划的,它运转速率快、功效壮大、并且十分天真。

有良多人老喜好拿Access与VisualFoxPro对照,对此我总嗤之以鼻,且让我们看看微软的批评吧!微软原话以下:“MicrosoftAccess是Office中的数据库,也是微软所发卖的软件中,利用最广且最简单进修的数据库工具。假如你是数据库的老手,假如你要利用MicrosoftOffice来创建使用程序,大概你想要一个相称便当的交互式产物,那末就选择Access。VisualFoxPro是用来创建干系型数据库使用程序的一种功效壮大的RAD工具。假如你是一名以创建干系型数据库使用程序维生的数据库开辟职员,并且你但愿速率与功效都到达极限,那末请选择VisualFoxPro。”(这段话在往年VisualFoxPro加入VisualStudio后,微软又反复了一次,夸大VisualFoxPro是专业开辟职员的开辟工具,而不是Access那样的一般用户的办公允台。)

依据我的履历,Access的MDB数据库合用于20万条/表的数据量的使用(它比VisualFoxPro数据库的独一优点是:一切的数据库组件都在统一个MDB文件里,而Fox的数据库大概有多个文件构成,显得混乱。),数据量再增添的话,不是说Access不克不及处置了,而是效力不可了——查询、索引都很慢。VisualFoxPro能处置百万计乃至上万万计的数据量,这都是有理论依据,在已往的20多年里,出格是年夜型收集数据库没有布衣化的年月里,业界就是依托DBF数据表来办理数据的,绝不夸大VisualFoxPro是可以平安、高效处置年夜数据量的专业工具。

有多人拿VisualFoxPro与VB、Delphi乃至是VC++做对照,这是很稚嫩的,前面三者是编程言语,而VisualFoxPro是数据库体系的开辟工具,生成合作就分歧。

我传闻过如许的典故:Foxmail最后是用VisualFoxPro编写的(以是叫做FoxMail),厥后改用Delphi编写。假如这是现实就很能申明成绩,VisualFoxPro是数据库开辟工具以它编写邮件客户软件有点勉为其难,即便乐成了效力也不会很高,但假如是一个用VisualFoxPro写的办理体系中请求有邮件功效,VisualFoxPro则完整能够做得很好。

VisualFoxPro作为数据库开辟工具,它为我们供应了非常健旺、高效的数据引擎,它容量年夜、速率快、天真、强健,以是用VisualFoxPro开辟单用户数据库相对比其他一切软件来的高效——已经有人冷笑VB处置5、6万笔记录就爬下,但我们的VisualFoxPro处置百万笔记录也不觉费劲,以是VisualFoxPro的开辟职员不管在甚么时分都要注重发扬VisualFoxPro的数据引擎的能力,如许才干立于不败之地。VC++很凶猛,但真正地用好它不简单,开辟效力也不高。假如利用VC++开辟使用程序还象VB那样只会利用控件,那末仍是别利用VC++了(这叫挂羊头卖狗肉),再者VisualFoxPro自己是VC++编写的,是历代最优异的程序员伶俐的结晶,为何有了VC++还要花精神编写VisualFoxPro,这自己就很申明成绩。

又有人把PowerBuilder请出来与VisualFoxPro作对照,人人都是数据库使用程序开辟情况,仿佛PB比VisualFoxPro凶猛。就数据库体系的开辟而言,VisialFoxPro能够开辟单用户体系、收集情况下的文件服务器体系、客户机服务器体系、WebServer、数据处置的COM组件、WebService,能够说除Web界面没法开辟以外,但凡与数据库体系有关的开辟范畴VisualFoxPro都很好的撑持。PB的出发点在客户机服务器体系,也能很大度的完成事情,其中弃取全凭团体喜欢;别的,PB的本钱很高。据我所知它的代价非常高贵(有人戏称呼PB是天下五百强才用的起的产物),而VisualFoxPro才卖几千国民币。固然,这个概念您能够不承受——在中国软件是没有代价的,每张只卖5元国民币;另有PB的开辟体例不同凡响,用了他今后再改学其余会对照坚苦;最初退一万步讲,您要变更编程工具,我也不同意改用PB,由于PB再好也是一个数据库开辟工具,从这下面讲与VisualFoxPro是一个级其余器材,您想变更工具必定有更多的需求,我看用C#或Delphi会是更佳的选择。

一切这些言语与VisualFoxPro比拟,最年夜的区分就是:VisualFoxPro是程序计划言语与DBMS的完善分离,而Vc++、Delphi、Vb、PB都只是编程工具,而不是DBMS。VisualFoxPro的这一特征,决意了它更符合与任何范例的企奇迹单元,我没法设想——为了复杂的查询还要用Vc++、Delphi、Vb、PB编写一个Exe文件,利用Command窗口多好!

又有人把收集数据库如Oracle、SQLServer与VisualFoxPro比拟较,说了VisualFoxPro一年夜通的好话,这类人实在很傻,你年夜可对他五体投地。年夜型数据库与桌面数据库在体系开辟中的感化是纷歧样,二者是相反相成的。我们应当把注重力放在“如何发扬二者数据库引擎最高效能的成绩上”,而不是往争辩孰优孰劣。这类争辩就比如是批评是汉子大度、仍是女人俊丽那样——毫偶然义。

VisualFoxPro从VisualStudio平分离出来了

2001年2月26日,微软公布将VisualFoxPro7从VisualStudio平分离出来,这是一个好动静仍是坏动静呢?我们来剖析一下:

我们得到了甚么

我们先来察看,VisualFoxPro不成为.Net言语,在手艺上丧失的是:不克不及开辟基于.Net的Web使用程序。

VisualStudio.Net是一种善于于开辟Web使用程序的工具,已往与如今微软占领着"桌面使用程序"使用市场,如今微软要吞噬如今由其他公司把持的年夜型收集使用市场,因而推出了.Net构架,VisualStudio.Net就是开辟基于.Net的使用程序的RAD(疾速开辟情况)。

笔者以为:最少在可知的一两年内,我们这些用VisualFoxPro写程序的人不会有效VisualFoxPro开辟年夜型Web使用需求,客不雅上尽年夜多半企业也不会有自建一个电子商务网站的需求,我们其实不会由于VisualFoxPro不是.Net言语而得到我们的市场--一般的企业级(单用户构架、FileServer构架、(两层、三层)客户机服务器构架)的使用。等.Net真正热起来,那将是几年后的事变了!

固然作为.Net言语也能够开辟桌面使用程序,VisualFoxPro成为.Net言语不是更好吗?笔者的意见是:纷歧定。一名网友说:VB.Net的Z法像VC++又像JAVA,已完整不像BASICZ法了,等於是要从头W另外一套Z言了,有这类感到的VB程序员良多,传闻外洋有良多VB程序员还"内心不安"的。连微软也供认:VB6与VB.Net是不同很年夜的言语。

假定VB变更的只是语法特征(这已够凶猛的),那末假如VisualFoxPro如今成为.Net言语,其标记性功效的丧失必定比VB更多!我们以为:这个中最不克不及让人人容忍的就是:VisualFoxPro的数据引擎和数据处置手腕将丧失殆尽,说假话我们中多半人利用VisualFoxPro就是看中了它在数据处置上的无与伦比上风。.Net言语利用大众运转库(CommonRuntimeLanguage),数据库方面的功效是经由过程外挂ADO等组件完成的。在手艺不成熟的如今,让VisualFoxPro运转在CLR上,必将只要三种选择:作废VisualFoxPro的数据处置组件,让它利用组件处置数据;把VisualFoxPro的数据引擎到场大众运转库;VisualFoxPro的数据引擎做成一个组件。可见这三种选择没有一种是公道的,即便成了,那末VisualFoxPro也就成了一个怪样子的器材。

VisualFoxPro与.Net

VisualFoxPro可以很好的撑持XML、WebService、COM。经由过程它们,VisualFoxPro就可以与.Net整合在一同,并能开辟.Net中最最抢手的话题:WebServices。

客不雅上,有益于VisualFoxPro的开展

VisualFoxPro作为VisualStudio的一员其实不能很好的开展"Fox的奇迹",这个概念是列国狐友的广泛共鸣。作为VisualStudio的一员,VisualFoxPro更多的像其他VisualStudio产物看齐,无视本身特征的开展,无视用户的需求;产物晋级、服务包的供应周期变长(要等其他产物的竣工),假如VisualFoxPro7不分别出来,公布期最少要晚半年。将VisualFoxPro从VisualStudio.Net平分离出来,最最少以上两个成绩会有很好的变动,出格是VisualFoxPro会更器重用户的需求。

自力面临应战

VisualFoxPro从VisualStudio.Net平分离出来最年夜的害处是:必需单独面临市场。说白了就是:能不克不及卖的好?假如VisualFoxPro7.0的买卖还不错,那末VisualFoxPro就会开展的很好--这是很复杂的事理。

在微软一切的开辟情况中,VisualFoxPro是独一内嵌数据引擎的——VC、VB都必需外挂数据处置引擎,如:DAO、ADO等,固然VC可使用底层API挪用来完成数据库处置方面的义务——这就是VisualFoxPro的特征--为数据处置而生,可是假如如今自觉的把VisualFoxPro并进VisualStudio.Net的话,VisualFoxPro的这一特征一定不克不及保留,这对微软、对用户都是丧失。VB、VC则没有这个成绩--归正它们不内置数据引擎,只需.Net能够挪用数据处置组件就能够了!

VisualFoxPro7的特征

后面已提到屡次,VisualFoxPro7已在2001年5月中旬正式公布的,6月份在美国上市。如今很多网友已失掉了VisualFoxPro7的英语正式版,利用以后,发生了各种评判。在美国人们以为,VisualFoxPro7是继VisualFoxPro3今后Fox开展史上最具有“反动意义”的版本,评价是很高的;而在国际,很多尝鲜者叹息:这是微软欠好意义说SP的产物,几乎就是VisualFoxPro6+SP6……两种评价相差这么年夜,谁是谁非呢?

笔者在2000岁尾就失掉了它的Bata1版,2001年7月失掉了英语正式版。初度会晤确有扫兴的地方——界面变动太小了——除几个窗口能够停放、菜单上多了几个图标以外,几近与VisualFoxPro6没有区分,最没法容忍的是可视化控件一个也没有增添……

我耐着性质读着匡助懂得VisualFoxPro7的新特征,渐渐的我有了如许的感觉:有了VisualFoxPro7我决不必VisualFoxPro6,这也是我对VisualFoxPro7的评判,固然它不完善,有的中央不尽善尽美,我仍是以为给它打个80分老是应当的。接上去笔者就谈谈利用的感觉:

巨好的开辟情况,这次要表现在六个方面:

IntelliSense(智能感知输出提醒)、ObjectBrowse、DocumentView、TaskList(义务列表)、比来利用过的文件纪录、窗口停放。

IntelliSense。我之前经常倾慕VB程序员,他们在VB5时就具有了IntelliSense工具,因而他们不用要影象大批的命令、函数、在对外来的ActiveX、COM编程时也能容易的失掉工具的办法、属性、事务。
在VisualFoxPro里,假如说影象VisualFoxPro自己的器材还没有甚么坚苦的话,对ActiveX、COM得属性、办法、常量就头疼了。如今VisualFoxPro7撑持IntelliSense了,而且供应了壮大的用户界说功效,在VisualFoxPro里这是一个可组态的工具;如今VisualFoxPro7不但撑持对外部工具、命令、函数的智能输出导航,更撑持对ActiveX、COM的智能输出导航,使人镇静的是:VisualFoxPro的IntelliSense还撑持最新的WebService。完整能够自大的说:VisualFoxPro的IntelliSense是最棒的,是能够由用户界说的。

ObjectBrowse。与IntelliSense一样,在其他开辟情况中早就有了,但并没有因而下降我对它的乐趣。起首,对COM工具、ActiveX的察看工具的确很有效;最主要的是:VisualFoxPro7的ObjectBrowse与VisualFoxPro开辟情况严密分离在一同--能够很复杂的从ObjectBrowse中拖逸COM工具接口到程序中,很复杂的就能够“实作”COM工具的接口。

DocumentView。这是一个程序编纂的帮助工具,它能够列出文件中一切的历程、办法、函数、宏界说、头文件,匡助程序员在大批代码中疾速导航。

TaskList(义务列表)是一项知心计划,它的功效有点像“书签”。但比“书签”壮大的中央在于:一旦封闭文件“书签”就开释了,而TaskList不会。任什么时候候点击TaskList项目就能够疾速翻开相干文件,导航到相干的地址。

就像Word那样,VisualFoxPro会影象用户比来利用过文件,如许就可以削减用户查找文件的工夫。

窗口停放。显现器愈来愈年夜、分辩率愈来愈高,程序员的桌面空间愈来愈小——开辟情况对外部工具窗体的办理很要紧——公道组合,供应更年夜事情空间。在我用过的开辟工具中,我最喜好VisualFoxPro的情况设置,不中意的是:命令窗口、数据事情期窗口、属性窗口的混乱。如今好了——VisualFoxPro7撑持了工具窗口停放,到达了勤俭空间的目标。


VisualFoxPro7对开辟情况的改良有渺小的地方的变更、更有年夜部头的作品。它吸取了各类开辟情况的长处,融进了Fox本人的特征,值得称道。

数据库事务

VisualFoxPro7最亮丽的特征是60个摆布的数据库事务,这是自VisualFoxPro3以来一次最年夜的对数据库引擎的改良。这些事务对办理全部数据库有很严重的意义,我们能够把保护数据库的代码写在事务中,只需有响应的操纵就会触发,如许就收罗了一切的相干举措,而不是像之前那样写在使用程序中!数据库的事务使用面大概很广,发扬它的感化还得靠人人的伶俐!

XML与WebService

VisualFoxPro7撑持XML文档与Fox光标的转换,真是一件使人镇静的事变,之前我们开辟COM使用程序时总为数据汇合传送感应头疼——自己的办理计划是——仿照ADO的做法,让客户程序以轮回的体例失掉纪录集;当COM组件要失掉纪录集时,仿佛就更贫苦了……如今好了,业界新尺度——XML能够文本(字符串)的体例传送数据汇合,真是一件美事!

V在执行崩溃恢复时,理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是很重要的:
爱飞 该用户已被删除
沙发
发表于 2015-1-19 20:08:04 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
不帅 该用户已被删除
板凳
发表于 2015-1-25 19:14:56 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
乐观 该用户已被删除
地板
发表于 2015-2-3 15:57:20 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
深爱那片海 该用户已被删除
5#
发表于 2015-2-9 03:46:02 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
精灵巫婆 该用户已被删除
6#
发表于 2015-2-26 20:48:25 | 只看该作者
大家注意一点。如下面的例子:
小魔女 该用户已被删除
7#
发表于 2015-3-8 17:33:06 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
飘灵儿 该用户已被删除
8#
 楼主| 发表于 2015-3-16 08:19:27 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
小女巫 该用户已被删除
9#
发表于 2015-3-22 21:18:23 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-6 17:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表