标题:[转贴]认识VF--Visual FoxPro 漫谈_4
只看楼主
难得糊涂2
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-28
 问题点数:0 回复次数:1 
[转贴]认识VF--Visual FoxPro 漫谈_4

Visual FoxPro 已经过时了吗

我直言,这样的问题我真的听腻了。这个问题我听了好几年了。从谣言出现到今天Visual FoxPro的版本已经生了两次变化,就是Visual FoxPro 6.0 2001年春天推出的Visual FoxPro 7.0。根据微软的官方消息,Visual FoxPro 8(可能是这个名称吧)已经在研发之中了。我不敢保证是否会有Visual FoxPro 9.0(这就像我不敢保证微软是否在那时还存在一样)。可以这样认为,只要不出意外情况(比如微软倒闭、业界发生了重大的变革等),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编程的高尚境界!

面向记录与面向集合之争

根据笔者的浅薄认知,关系型数据库处理可以分为面向记录操作和面向集合操作。

种开发工具支持的客户端光标体系就是面向记录操作的,它们支持记录之间的绝对定位,更明白地说就是可以在记录之间导航,诸如:SKIPGO TOP之类的语句。Visual FoxPro 无疑是此道的绝对高手,20年的语言发展,聚集了大量面向记录的语言要素。这是因为这样,我们才会反复强调:Visual FoxProCursor 体系灵活、强大!

各类大型数据库,如OracleSQL Server 是面向集合处理的代表,看看正统的SQL 语言,绝对没有数据导航之说,数据记录之间是平等的,一切都要讲关系、摆条件!

随着技术的发展,人们开始注意到,不能分割这两种对数据的操作方式,于是大型数据库支持了游标语素,Fox也支持符合规范的SQL 语言。

产品定位导致Visual FoxPro变化不易为人们感觉。微软要把Visual FoxPro作为三层构架(或是多层构架)的中间层开发工具。

么是三层构架呢?第一层是用户界面:它包含了用户界面,让使用者输入,输出,查询等工作;第三层是资料层:它就是用来放资料的地方,一般是指后端数据库, 主要有包括 OracleSQL Server ,它主要是提供一个很大的地方,来有规则的存放数据;第二层是商务逻辑层(中间层):有人要说了:存取资料,直接从第一层跳到第二层可不可以?当然可 ,没有人规定不能走捷径,而且从数据库直接抓资料,既快又好,那为什么搞出个第二层呢?

商务规则是经常变化的,比如上班从8 点改为10 ,那电脑怎那么知道老板因为不景气少让大家上二个小时班呢?它一定无法知道,你必须告诉它,这时问题就来了,如果你有很多部电脑,例如:100 ,你就得一部部换新程序。如果这是一个挂在Internet上的网络程序,难道总让用户download新程序不成?

更重要的是,在大量客户存在的环境里,传统的两层构架根本没有能力承担巨大的工作压力,必须通过某种中间系统实现压力平衡,这就是中间层的另一妙用!

间层是没有图形界面设计的代码编写,并且是OOP方式的代码编写,不仅要熟悉后台数据库的特性,还要考虑前台界面工具的特性,最重要的是商务逻辑的构架, 同时还要求懂得IISMTS(COM+)NT的安全设置等复杂枯燥的东西。有趣的是,近年来 Visual FoxPro 的各种改进,更多的是在这些方面下功夫,到了最新版本的Visual FoxPro 7 更是在此方面增加了若干特性,下面就让我用四个问题来说明Visual FoxPro 在开发中间层方面的贡献:

问题一:Visual FoxPro能开发出稳定、有效率的Server程序吗?能,在1999年发布的Visual FoxPro SP 3中微软赋予了Visual FoxPro开发多线程进程的内组件的能力,并增加了新的运行时刻库VFPnT.DLLn代表版本号),支持其运行,在这个运行库中,删除了大量老式的 和界面控制元素,使得它更小巧。但是由于Visual FoxPro6本身不是很稳定(加打SP4SP5才有所改善),所以这个很棒的功能在Visual FoxPro 6下并不能充分发挥,直到Visual FoxPro 7出现才使它的显示出英雄本色!

问题二:分布式的事务、动态负载平衡怎么实现?Visual FoxPro 7COM+有很好的支持,借由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确实“没有改变”!
搜索更多相关主题的帖子: FoxPro 漫谈 认识 
2007-10-28 21:26
参股银行
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-28
得分:0 
谢谢,已经收集
2007-10-28 22:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-181507-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.358568 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved