pp;http://blogsinacomcn/s/blog_6bbe7cce0100vfvrhtml;pp
1《简爱》——你以为,我因为贫穷,低微,矮小,不美我就没有灵魂没有心吗?你想错了我的灵魂跟你一样充实,我的内心跟你一样地丰富。我们站在上帝的脚跟前,我们是平等的!
2《第一次亲密接触》——如果还有一天寿命,那我要做你女友。我还有一天的命吗?……没有。所以,很可惜。我今生仍然不是你的女友。如果把整个浴缸的水倒出,也浇不熄我对你爱情的火。整个浴缸的水全部倒得出吗?……可以。所以,是的。我爱你……
3《大话西游》——曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了。如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是一万年。
4《流星花园》——我喜欢你!我喜欢你!喜欢迷恋到连自己都觉得莫名其妙,在我眼中看到的只有你一个人而已。杉菜,我知道我很烦,可是我要你知道,只要你跑掉的话,我一定会去追,不管任何地方。就算是地狱也好,不管你跑到天涯海角,我都一定要追到你。杉菜,我要你知道一件事,就是——我要定你了!
5《半生缘》——我要你知道,这个世界上有一个人会永远等着你。无论是在什么时候,无论你在什么地方,反正你知道总会有这样一个人。
6《人鬼情未了》——我愿付出一切,只求能再接触你一次!
7《卧虎藏龙》——我愿意游荡在你身边,做七天的野鬼,跟随你。就算落进最黑暗的地方……我的爱,也不会让我成为永久的孤魂。
8《101次求婚》——我,即便是50年之后也不会改变,我仍然会象现在这样爱你!
9《乱世佳人》——白瑞德,这些年来,我一定一直都爱着你,只是我不晓得。
10《花样年华》——如果,我多一张船票,你会不会跟我一起走?
11《廊桥遗梦》——要我向你走去,你向我走来已经很久了。虽然我们相会之前谁也不知道对方的存在。点评:我们相会之后谁也忘不了对方的爱。
12《重庆森林》——一个人喊(哭),你给包纸巾他就行,但如果一间屋喊(哭),你就要做很多事情。
13《爱情故事》——珍妮弗:爱是永不言悔!
14《星愿》——世界上最遥远的距离不是生和死,而是站在你面前却不能说“我爱你”
15《英国病人》——你(嘉芙莲)的呼吸声是雨声,在我死前,多么渴望甘霖能再次降落我的脸庞。
16《白昼之夜》——我一生中最美好的日子是发生那件事情那天,是和直树相遇。
17《卡萨布兰卡》——世界上有那么多的城镇,城镇中有那么多的酒馆,她却走进了我的。
18《情人》——我老了。有一天,在一处公共场所的大厅里,有一个男人向我走来,他主动介绍自己,他对我说:我认识你,我永远记得你。那时候,你还很年轻。人人都说你很美,现在,我是特为来告诉你,对我来说,我觉得你比年轻时还要美,我爱你如今凋残的容貌胜过你昔日的红颜。
19《堕落天使》——当你年轻时,以为什么都有答案,可是老了的时候,你可能又觉得其实人生并没有所谓的答案。
20《爱情白皮书》——挂居,我一直喜欢着你,一直无法忘记你,即使物转星移、口红改变了;即使明日会四分五裂,我的心一直不变,在四年前一样的地方。不管再怎么痛苦,如何烦恼,再怎么没办法,即使说一定要忘记你,还是办不到,还是那么喜欢你,不能从这种心情中逃跑。挂居,我还是喜欢你。
《河东狮吼》:“从现在开始,你只喜欢我一个人,要宠我,爱我,不能骗我,答应我的每一件事都要做到,对我讲得每一句话都要真心,不许欺负我,骂我,要相信我,别人欺负我,你要在第一时间出来帮我,我开心了,你就要陪着我开心,我不开心了,你就要哄我开心,永远都要觉得我是最漂亮的,梦里也要见到我,在你的心里面只有我,就是这样了。”
《我的野蛮女友》:
第一、不要叫她温柔。
第二、不要让她喝三杯以上,否则她会逢人就打;
第三、在咖啡馆一定要喝咖啡、不要喝可乐或橙汁;
第四、如果她打你,一定要装得很痛,如果真的很痛,那要装得没事;
第五、在你们认识的第一百天,一定要去她班上送一支玫瑰,她会非常喜欢;
第六、你一定要学会击剑,打壁球;
第七、要随时做好蹲监狱的思想准备;
第八、如果她说她会杀了你,那不要当真,这样你会好受些;
第九、如果她的鞋穿着不舒服,一定要和她换鞋穿;
第十、她喜欢写东西,要好好地鼓励她。
《大话西游》:你应该这么做,我也应该死。曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是……一万年。
《堕落天使》:当你年轻时,以为什么都有答案,可是老了的时候,你可能又觉得其实人生并没有所谓的答案。每天你都有机会和很多人擦身而过,有些人可能会变成你的朋友 或者是知己所以我从来没有放弃任何跟人磨擦的机会。有时候搞得自己头破血流,管他呢! 开心就行了。
《花样年华》:“如果,我多一张船票,你会不会跟我一起走?”
《东邪西毒》:多年之后,我有个绰号叫西毒,任何人都可以变得狠毒,只要你尝试过什么叫做嫉妒。我不介意其他人怎么看我,我只不过不想别人比我更开心。我以为有一些人永远都不会嫉妒,因为他太骄傲。在我出道的时候,我认识了一个人,因为他喜欢在东边出没,所以很多年后,他有个绰号叫东邪。 知不知道饮酒和饮水有什么区别?酒越饮越暖,水越喝越寒。 你越想忘记一个人时,其实你越会记得他。 人的烦恼就是记性太好,如果可以把所有事都忘掉,以后每一日都是个新开始,你说多好。 每个人都会经过这个阶段,见到一座山,就想知道山后面是什么。我很想告诉他,可能翻过山后面,你会发现没什么特别。回望之下,可能会觉得这一边更好。 每个人都会坚持自己的信念,在别人看来,是浪费时间,她却觉得很重要。
《向左走,向右走》:生命中充满了巧合,两条平行线也会有相交的一天。
《红玫瑰与白玫瑰》:也许每一个男子全都有过这样的两个女人,至少两个。娶了红玫瑰,久而久之,红的变了墙上的一抹蚊子血,白的还是“床前明月光”;娶了白玫瑰,白的便是衣服上的一粒饭粘子,红的却是心口上的一颗朱砂痣。
《东方不败》:有人就有恩怨,有恩怨就有江湖。人就是江湖,你怎么退出?
《半生缘》:世均,我们再也回不去了……
作为市场上最灵活和功能最强大的数据库管理系统,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 10首先背离了与兼容的原则。它开始在图形用户界面的设计和软件开发方法中采用一些新的思路,从而使它领先于当时年前景已不妙的dBASEIV。
从20开始,FoxPro才真正形成了它自己的特色。当FoxPro 20推出时,它包含了若干项关键技术,给PC数据库开发市场带来了革命性的变化。这些技术是:
加入了Rushmore技术,它能从事许多难以想象的复杂工作。突然之间,带有以百万计数的记录的表格在PC数据库系统中不仅成为可能,而且可以非常容易地加以实现,无需转用其他比较昂贵的技术;Rushmore最重要的优点在于它是完全自动化的,不用用户花费精力和时间。因为有了Rushmore技术,再加上Fox天生的快速,即使在今天Visual FoxPro仍然是最快的桌面数据库引擎。
SQL语句是FoxPro 20推出的另一项具有革命性意义的关键技术。Fox的开发人员首次用单一语句取代了整个程序过程,并且这种支持是内含于Fox数据引擎之中的。SQL语言曾经并且现在仍然是强大的数据语言。
FoxPro 20还推出了某种所见即所得的开发报表和屏幕的工具。
FoxPro 20确实具备了我们今天的Visual FoxPro拥有的一些出色的功能。GUI设计服务、SQL和极快的数据访问,是它明显的特征。
FoxPro 25有for DOS、for Windows版,不过那个Windows版只是具有看上去像“Windows”的DOS应用程序的外观。特别是那个DOS下的版本绝对是经典之作,观察身边是不是还有很多这样的系统在运行着?当时有人这样评价:这个软件已经无法再快了,除非硬件升级……
直到1995年春天Visual FoxPro推出时,才出现了FoxPro的又一次重大改进(这时Microsoft已经收购了Fox Software公司)。Visual FoxPro 30增加了一些人们企盼已久的特性,使PC数据库开发界大为震惊。我们可以看到:Visual FoxPro与FoxPro是由很大差别的,不要再把Visual FoxPro成为FoxPro了。这些特性是:
数据库容器(Database Container),也叫DBC,它增加了开发人员多年盼望的对存储过程的支持、与表格相关联的数据规则和一系列的附加数据功能。
远程数据的无缝连接。谈到连接远程数据的处理,大家往往会想到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驱动程序。
在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访问远程数据的效率很高,并能把远程数据与本地数据完美的融合在一起,最大程度地提高开发效率和程序运行效率。
完全支持面向对象技术(OOP)。充分而健壮的实现了面向对象的处理方式大大改善了软件开发条件。健壮的对象模型和创建你自己的类及子类的所用的功能,形成了一种全新的软件开发手段。
Visual FoxPro 50是30的升级版本,它是一个32位的系统。具备了使用和创建COM服务器的功能,并开始支持在Internet上发布Visual FoxPro。从这个版本开始,Visual FoxPro进入了Visual studio家族,并且Visual FoxPro将不再升级的谣言也是在这个时期出现。
在Visual FoxPro 60出现之前,微软计划推出DNA,演化到今天就是NET,并承诺把Visual FoxPro发展成健壮的中间层工具,所以这以后Visual FoxPro的变化初级用户就不太容易感觉了。
Visual FoxPro 60也没有根本上的变化,不过有些变化还是相当明显的。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 特性。
ActiveX documents 允许用户在一个应用程序中编辑另一个应用程序的document。我们把Word文档嵌入或链接到Visual FoxPro中,就可以不离开Visual FoxPro编辑Word文档了。
ActiveX controls 为开发人员提供了增加的系统功能的方法,典型的应用就是各类ActiveX控件的使用来加强用户界面。这里要说明的是Visual FoxPro不支持(70也不支持)“集装箱式的”ActiveX 控件,比如Cool bar控件。
Automation 允许用户在一个应用程序中操纵另外一个应用程序或组件,典型的应用就是Visual FoxPro 与Office 的OLE-Automation应用。
Remote Automation 或者称 Distributed COM (DCOM)与Automation技术差不多,只是它支持组件的分布,这就是微软的分布式应用战略。
Visual FoxPro 不支持Active controls(ActiveX)的开发,但支持server components的开发,也就是在Automation、Remote Automation中使用的组件都可以用Visual FoxPro来开发。Visual FoxPro的这种能力是从50开始具有的,到了60的SP 3已经可以开发出多线程的组件了,这些在上文已经有过论述。以后的 Visual FoxPro 版本一定会对Automation,特别是Remote Automation有更好的支持,无论是开发server components,还是由Visual FoxPro充当客户程序。
综上所述,Visual FoxPro是创建关键任务的、企业范围的、面向对象的单层次、双层次、多层次应用程序的重要开发工具,这些应用程序可以在本地或全球范围内进行配置。
Visual FoxPro 已经过时了吗
恕我直言,这样的问题我真的听腻了。这个问题我听了好几年了。从谣言出现到今天Visual FoxPro的版本已经生了两次变化,就是Visual FoxPro 60 与2001年春天推出的Visual FoxPro 70。根据微软的官方消息,Visual FoxPro 8(可能是这个名称吧)已经在研发之中了。我不敢保证是否会有Visual FoxPro 90(这就像我不敢保证微软是否在那时还存在一样)。可以这样认为,只要不出意外情况(比如微软倒闭、业界发生了重大的变革等),Fox就会平稳地发展!
在国外,一个程序员、一家公司把他们使用的开发工具视作一项投资,作为Visual FoxPro的开发厂商微软公司就必须保护客户的投资权益,这是很基本的商业原则,微软绝对不敢随意淘汰有着50万用户的Fox,除非永远不想赚这50万用户的钱了。
为什么会有Visual FoxPro 要淘汰的传闻呢,我不是很清楚。但这两年微软对Visual FoxPro的不宣传态度却是为这股谣言起到了推波助澜的作用。另外Visual FoxPro 确实是一个容易引起误会的产品,初级用户很容易对它产生“不怎么样的”评判,于是加上那谣言就产生了“Visual FoxPro 就真的要淘汰了”的幻觉了。
为什么说Visual FoxPro 是容易引起误会的产品呢?我总结以下几点原因:
面向对象与面向过程之争
我们说Visual FoxPro是面向对象化的语言,是有根据的。面向对象化的语言必须具备四个特性:抽象(Abstraction)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。对照一下Visual FoxPro,是不是支持这四大特性!
当然,Visual FoxPro 与C++和Object Pascal 一样都是历史悠久的语言,所以语言中有很多面向过程的语素。我知道很多学校在教学中,只是教导学生们使用Visual FoxPro的面向过程的语言特色,而忽视了面向对象的教学,同样的问题也存在于广大的 Visual FoxPro 程序员中。我们必须明白:不能因为我们没有使用Visual FoxPro面向对象的强大功能,而说Visual FoxPro不是面向对象的语言,这就像不能因为天下雨、没有出太阳,而说太阳被天狗吃掉了——多么的幼稚可笑!
我们知道Visual FoxPro对数据的操作沿用了多年来的面向过程的做法,这与现在流行的开发工具有很大的不同。我觉得,微软这样做是有它的道理的:
第一,面向过程的数据处理,更能发挥XBase语言体系的灵活与随意的特色。这一点,你用过其他的数据库开发工具,然后再用用Visual FoxPro就明白了。
第二,不直接提供面向对象的数据处理组件,不代表不允许用户封装自己的数据处理组件。很多优秀的 Fox程序员,都会自己封装专门数据处理组件,这才是Visual FoxPro编程的高尚境界!
面向记录与面向集合之争
根据笔者的浅薄认知,关系型数据库处理可以分为面向记录操作和面向集合操作。
各种开发工具支持的客户端光标体系就是面向记录操作的,它们支持记录之间的绝对定位,更明白地说就是可以在记录之间导航,诸如:SKIP、GO TOP之类的语句。Visual FoxPro 无疑是此道的绝对高手,20年的语言发展,聚集了大量面向记录的语言要素。这是因为这样,我们才会反复强调:Visual FoxPro的Cursor 体系灵活、强大!
各类大型数据库,如Oracle、SQL Server 是面向集合处理的代表,看看正统的SQL 语言,绝对没有数据导航之说,数据记录之间是平等的,一切都要讲关系、摆条件!
随着技术的发展,人们开始注意到,不能分割这两种对数据的操作方式,于是大型数据库支持了游标语素,Fox也支持符合规范的SQL 语言。
产品定位导致Visual FoxPro变化不易为人们感觉。微软要把Visual FoxPro作为三层构架(或是多层构架)的中间层开发工具。
什么是三层构架呢?第一层是用户界面:它包含了用户界面,让使用者输入,输出,查询等工作;第三层是资料层:它就是用来放资料的地方,一般是指后端数据库,主要有包括 Oracle、SQL Server 等,它主要是提供一个很大的地方,来有规则的存放数据;第二层是商务逻辑层(中间层):有人要说了:存取资料,直接从第一层跳到第二层可不可以?当然可以,没有人规定不能走捷径,而且从数据库直接抓资料,既快又好,那为什么搞出个第二层呢?
商务规则是经常变化的,比如上班从8 点改为10 点,那电脑怎那么知道老板因为不景气少让大家上二个小时班呢它一定无法知道,你必须告诉它,这时问题就来了,如果你有很多部电脑,例如:100 台,你就得一部部换新程序。如果这是一个挂在Internet上的网络程序,难道总让用户download新程序不成?
更重要的是,在大量客户存在的环境里,传统的两层构架根本没有能力承担巨大的工作压力,必须通过某种中间系统实现压力平衡,这就是中间层的另一妙用!
中间层是没有图形界面设计的代码编写,并且是OOP方式的代码编写,不仅要熟悉后台数据库的特性,还要考虑前台界面工具的特性,最重要的是商务逻辑的构架,同时还要求懂得IIS、MTS(COM+)、NT的安全设置等复杂枯燥的东西。有趣的是,近年来 Visual FoxPro 的各种改进,更多的是在这些方面下功夫,到了最新版本的Visual FoxPro 7 更是在此方面增加了若干特性,下面就让我用四个问题来说明Visual FoxPro 在开发中间层方面的贡献:
问题一:Visual FoxPro能开发出稳定、有效率的Server程序吗?能,在1999年发布的Visual FoxPro SP 3中微软赋予了Visual FoxPro开发多线程进程的内组件的能力,并增加了新的运行时刻库VFPnTDLL(n代表版本号),支持其运行,在这个运行库中,删除了大量老式的和界面控制元素,使得它更小巧。但是由于Visual FoxPro6本身不是很稳定(加打SP4或SP5才有所改善),所以这个很棒的功能在Visual FoxPro 6下并不能充分发挥,直到Visual FoxPro 7出现才使它的显示出英雄本色!
问题二:分布式的事务、动态负载平衡怎么实现?Visual FoxPro 7对COM+有很好的支持,借由COM+就可以解决这两个问题了!
问题三:作为Server程序,客户程序怎样与Server交换数据集合?这是Visual FoxPro 6开发的Server程序的致命弱点,我们知道Visual FoxPro是用来处理数据的,但不能与外界自由交换数据集合会大大降低开发、使用以及程序运行效率!在Visual FoxPro 7里我们XML就可以快速、轻易的传递大型数据集合,真正做到数据集的来去自由。现在回想Visual FoxPro 6中我们用的那种“循环+属性”的做法,真有天上与人间的感受!
问题四:能不能让Visual FoxPro开发的Server任由客户使用,叫干什么就干什么?可以的,在Visual FoxPro 7里提供了一个全新的函数:ExecScript()。有了它,就可以一次执行多条客户端送来的符合Visual FoxPro规范的语句:你可以定义变量、做查询、更新数据、修改表结构……
微软确实实践着让Visual FoxPro在中间层运行的承诺。但遗憾的是:由于国内用户的水平、国内软件应用的领域,对大多数Fox Fans 无法感受Visual FoxPro日新月异的变化——对他们来说,Visual FoxPro确实“没有改变”!
Visual FoxPro 只能局限于桌面应用程序的开发吗?
技术在进步,软件技术的应用不断在拓宽,Internet 已经是众多开发工具竞相支持的应用领域。Visual FoxPro 从版本 5 开始不断扩充对Internet的支持,到最新的Visual FoxPro 7 更是增加了对Web Service的支持。我们可以把Visual FoxPro 对Internet的支持分为三大部分:
第一,简单的HTML的转换。Visual FoxPro 自带的“Web 发布”就是这类型的工具,利用HTML和DHTML的模版,支持Visual FoxPro数据的Web化,这是一种全静态的 Web 支持。
第二,适合于企业内部使用的 Active Document 技术。是不是希望快速、简单的把Visual FoxPro应用程序转变为Web 应用程序,这个Active Document 技术就是最佳的选择。它支持 App 程序运行在IE中,它的缺点是:在客户端必须安装Visual FoxPro的运行库、客户端与数据库间依然是紧密的有状态的关系,属于F/S构架——只是界面能够运行在IE之中了。它的开发快速以及它依然基于传统构架,决定了这个技术只能运行在企业内部,一般不能在广域网络中发布。
这技术是Visual FoxPro 6提出的,当时在 Tool 菜单里还有一个专门的菜单项。到了而今的Visual FoxPro 7,这个菜单项已经取消了,但并不是说Visual FoxPro 7 不支持Active Document,只是这种并不出色的技术没有必要再放在醒目的位置了。
第三,基于COM 的 Web 应用。
Visual FoxPro 真正能被用于Web 开发,就是通过 COM 支持的。
这里您要有个认识,作为数据库开发工具,Visual FoxPro 不是FronPage这样的用于开发Web 界面的工具(也许未来的 Visual FoxPro 会支持 Web 界面的开发)。Visual FoxPro 完全是作为 Server 运行在网站的后台,为各种应用提供服务。使用 Visual FoxPro 编写的 COM 组件能够被IIS支持,压在后台进行各种运作——这就是真正意义上的Visual FoxPro 的Web应用,也是典型的多层构架的中间层!
这个阶段,Visual FoxPro 对 Web的支持有可以划分为三个层次:
FoxISAPI。
这是最先登场的技术,当年 ASP 技术还没有出现的时候,我们在 IIS 里就可以通过 ISAPI 技术实现动态网页开发。
Web Server
ASP 技术出现了,我们知道 ASP 技术的一大特色就是支持服务器端的组件的应用。用 Visual FoxPro 的编写的 COM 组件就能运行在 IIS 里,供 ASP 调用。
Web Service
这是 Visual FoxPro 7 的新特性,也是当前最热门的技术。它与Web Service的最大不同就是:Web Server 组件只能通过 ASP 程序调用,而Web Service可以供任何系统在全球范围调用,无论客户端的硬件平台、软件平台,只要它支持SOAP、支持XML就可以了。
更夸张一点说:只要能上网,就可以享用 Web Service 提供的服务!
有人也许会问:我可以用VB、VC++建立对象组件时,为何我要用Visual FoxPro 来建立相同的组件 微软对这一问题有专门的评论,大意为:快、重复使用性、跨语言重复使用性。“快”是指用Visual FoxPro开发的组件撷取、处理资料都极为迅速,并且Visual FoxPro能够非常迅速的建立字符串。到底有多快,我想数据处理、存取的速度大家平时都领教过了,字符串生成速度我这里有个数据不妨一看,这是台湾的一位高手做的试验——将1M的数据写入文本中,结果VC++ 60程序用了35秒、VB 60程序用了11秒、Java 115用了24秒、Visual FoxPro 60用了7秒;“重复使用性”是指Visual FoxPro具备OOP的功能;“跨语言重复使用性”是指Visual FoxPro编写的对象编译以后成为COM、COM+对象组件,这样就可以在其他语言中使用它了。
不要以为Visual FoxPro是“低端产品",无论从数据库(DBF Base)品质还是开发环境评价Visual FoxPro,它都是一个“高端工具”。
许多人认为Visual FoxPro只能用来开发单用户系统或是文件服务器构架的小型网络系统——这是谬误——这种无知的言论在许多讲C/S、三层构架的书中都有(特别是一些VB、PB、Delphi的数据库编程书)。我可以很负责任的告诉大家完全可以用Visual FoxPro开发C/S结构的系统。这里说的C/S构架绝对是正宗的,不是用什么F/S构架在糊弄大家。在C/S构架中我们常常选择Visual FoxPro作为客户端开发工具,以Oracle、SQL Server等网络数据库压在后台,使用Visual FoxPro内置的Remote View和SPT技术,这样就可以完美地解决问题。这里不能详细展开,只特别介绍Visual FoxPro的本地引擎在开发中的作用。Visual FoxPro的本地引擎特别强大(上文我们说过处理百万条记录不费吹灰之力),我们在设计系统时可以十分简单的将远程数据与本地数据结合,很简单、很有效地控制网络数据流量、提高系统工作效率(我看过不少VB、Delphi、PB的书,他们很少在怎样控制网络数据流量、提高系统工作效率论述,不知是不屑一顾,还是其他什么原因)。
我认为Visual FoxPro的本地引擎在C/S构架下起码有三项伟大的用途。其一:非经常变动数据的本地存储。我国的邮政编码与地区的关系是相对稳定的数据,而且数据量也不是太小,我想总有上千个记录(我没仔细考察过具体情况),我们把这些信息存储在客户端的计算机中,就可以在使用邮政编码及其相关信息时从本地得到数据,这样能使高系统效率同时节省网络资源(这是C/S开发的重要原则),只在邮政编码发生变化时在服务器上统一更新,下载更新客户机上的数据。如果用别的软件实现同样的功能,绝对比Visual FoxPro麻烦而且效果绝对不及Visual FoxPro,这因为Visual FoxPro的数据引擎直接支持远程数据读取,能很好的融合本地数据与远程数据;其二:离线数据包。单位里总有人出差,在千万里路之外能不能拿着笔记本为客户发订单、与客户签合同,就像在自己的办公室一样?当他回到公司时只要把笔记本连到服务器中,发送更新就行了。Visual FoxPro的离线视图是经济且高效安全的方案(当然您可以使用远程拨入或建一个Web网站,这些Visual FoxPro可能干)。其实离线数据包还有一个重要的功能:当下载的数据是大量的(除非万不得已请不要这样设计系统),这种情况下使用离线视图可以数据集自动转化为物理表,充分利用Visual FoxPro的高速与灵活,完成后连线更新后端数据源——一切都很简单。我认为:离线视图绝对是Visual FoxPro在C/S系统中的一个卖点,虽然ADO也支持类似的东西,但肯定不及Visual FoxPro有效率;其三:数据驱动。您是否知道,Visual FoxPro中绝大多数文件格式实际上都是DBF文件,如DBC、SCX、FRX等,他们都可以由Visual FoxPro的本地引擎驱动完成复杂的任务。在设计C/S结构时如果要存储用户设置、自定义文件格式,用Visual FoxPro的本地引擎帮忙绝对比其他软件简单,因为你用的是换汤不换药的方法,但它简单、有效率。
Visual FoxPro 开发C/S系统时,最与众不同的特色就是对远程数据的操控是通过本地数据库来实现的,Remote View、Connection都作为本地数据库的对象被管理起来,完美的衔接本地数据与远程数据。这种在客户端建立远程数据逻辑的做法,与最新的ADONET有相似之处!
在三层构架中,Visual FoxPro可以充当任意一层的任务,但本人以为大中型系统的数据库部分应以网络数据库为主。客户端界面用Visual FoxPro也是可以的,但一般限于企业内部,在Internet上我们通常使用IE作为客户界面。在三层构架中Visual FoxPro最胜任中间层的开发,它简单(开发难度与普通的Visual FoxPro项目相差不大)、快速的字符串生成、支持COM技术、它支持(MTS)COM+技术、它支持XML(Visual FoxPro 70提供3个与XML有关的函数)、它具有强大本地数据引擎、灵活的数据处理方式、它支持多线程的服务组件的开发。
可能有人要问:用ASP+脚本语言一样可以开发Web系统,何必加个中间层。的确,目前在市面上与多讨论Web的书都直接使用脚本语言来开发整个系统,这是十分不正确的做法,甚至有写书还说硬件越来越快,因此使用脚本语言来开发整个系统并没有什么关系。会说出这样话的作者通常都是没有实际开发Web应用经验的人。脚本语言,如VBScript是一种解释性语言,运行效率很低,他们只合适作为胶水程序。开发Web系统正统的做法是:把应用逻辑编写成COM、DCOM对象,然后用少量的脚本语言来驱动/使用这些对象。这样系统开发时工作量会大一些,但它符合开发任何数
VF的主要用途就是制作一些中小型的数据库软件,如成绩管理系统、学生管理系统、图书管理系统、房产中介管理系统、财务管理系统等,只要用到数据库方面的管理系统都可以用VF制作。
主要学习表的操作,如查询、添加、删除、更新等,还有表单、菜单及报表等。
先给你举个例子吧
select id,count() from table_name group by id having count()>2
表示的是,选出某ID的记录大于2条的ID以及其条数
having是和group by结合使用的,他就相当于where语句,例如
select id,count() from table_name where id>2;
这个是按id分组的。
你就知道我说的和分组的结合使用就好了,
欢迎分享,转载请注明来源:表白网
评论列表(0条)