手机里面vf是什么文件|v格式的文件用什么打开

A. 手机上这些文件是什么意思,干什么的

1, "BT"指下载目录2,“e-book"指电子书3,MMS意思是彩信。 4,udx的英文全称为Universal Data eXchange,翻译成中文就是“通用数据交换”。 5,”cmsbrw“指:系统目录 6,mobileDat指-移动数据暂存目录7,realnews指–真实的新闻8,META-INF意思比较复杂,如下: 看完下面的帖子你就明白了 常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。 下面就来看看什么是 JAR 文件包吧: 1. JAR 文件包 JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。举个例子,如果我们具有如下目录结构的一些文件: == `– test `– Test.class 把它压缩成 ZIP 文件 test.zip,则这个 ZIP 文件的内部目录结构为: test.zip `– test `– Test.class 如果我们使用 JDK 的 jar 命令把它打成 JAR 文件包 test.jar,则这个 JAR 文件的内部目录结构为: test.jar |– META-INF | `– MANIFEST.MF `– test `–Test.class 2. 创建可执行的 JAR 文件包 制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。 Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。 其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由 hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。 创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,同样以上述 test 目录为例,命令如下: jar cvfm test.jar manifest.mf test 这里 test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf。因为要创建可执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的 JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了 Main-Class 一项。这在 MANIFEST 中书写格式如下: Main-Class: 可执行主类全名(包含包名) 例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类 (定义了 public static void main(String[]) 方法),那么这个 manifest.mf 可以编辑如下: Main-Class: test.Test <回车>; 这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束即可。创建了 manifest.mf 文件之后,我们的目录结构变为: == |– test | `– Test.class `– manifest.mf 这时候,需要到 test 目录的上级目录中去使用 jar 命令来创建 JAR 文件包。也就是在目录树中使用“==”表示的那个目录中,使用如下命令: jar cvfm test.jar manifest.mf test 之后在“==”目录中创建了 test.jar,这个 test.jar 就是执行的 JAR 文件包。运行时只需要使用 java -jar test.jar 命令即可。 需要注意的是,创建的 JAR 文件包中需要包含完整的、与 Java 程序的包结构对应的目录结构,就像上例一样。而 Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的 test.Test;而且在没有打成 JAR 文件包之前可以使用 java <类名>; 来运行这个类,即在上例中 java test.Test 是可以正确运行的 (当然要在 CLASSPATH 正确的情况下)。 3. jar 命令详解 jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar。它的运行需要用到 JDK 安装目录下 lib 目录中的 tools.jar 文件。不过我们除了安装 JDK 什么也不需要做,因为 SUN 已经帮我们做好了。我们甚至不需要将 tools.jar 放到 CLASSPATH 中。 使用不带任何的 jar 命令我们可以看到 jar 命令的用法如下: jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 … 其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示: -c 创建新的 JAR 文件包 -t 列出 JAR 文件包的内容列表 -x 展开 JAR 文件包的指定文件或者所有文件 -u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中) [vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数 -v 生成详细报告并打印到标准输出 -f 指定 JAR 文件名,通常这个参数是必须的 -m 指定需要包含的 MANIFEST 清单文件 -0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快 -M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数 [jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数 [manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数 [-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。 文件名 … 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。 下面举一些例子来说明 jar 命令的用法: 1) jar cf test.jar test 该命令没有执行过程的显示,执行结果是在当前目录生成了 test.jar 文件。如果当前目录已经存在 test.jar,那么该文件将被覆盖。 2) jar cvf test.jar test 该命令与上例中的结果相同,但是由于 v 参数的作用,显示出了打包过程,如下: 标明清单(manifest) 增加:test/(读入= 0) (写出= 0)(存储了 0%) 增加:test/Test.class(读入= 7) (写出= 6)(压缩了 14%) 3) jar cvfM test.jar test 该命令与 2) 结果类似,但在生成的 test.jar 中没有包含 META-INF/MANIFEST 文件,打包过程的信息也略有差别: 增加:test/(读入= 0) (写出= 0)(存储了 0%) 增加:test/Test.class(读入= 7) (写出= 6)(压缩了 14%) 4) jar cvfm test.jar manifest.mf test 运行结果与 2) 相似,显示信息也相同,只是生成 JAR 包中的 META-INF/MANIFEST 内容不同,是包含了 manifest.mf 的内容 5) jar tf test.jar 在 test.jar 已经存在的情况下,可以查看 test.jar 中的内容,如对于 2) 和 3) 生成的 test.jar 分别应该此命令,结果如下; 对于 2) META-INF/ META-INF/MANIFEST.MF test/ test/Test.class 对于 3) test/ test/Test.class 6) jar tvf test.jar 除显示 5) 中显示的内容外,还包括包内文件的详细信息,如: 0 Wed Jun 19 15:39:06 GMT 2002 META-INF/ 86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF 0 Wed Jun 19 15:33:04 GMT 2002 test/ 7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class 7) jar xf test.jar 解开 test.jar 到当前目录,不显示任何信息,对于 2) 生成的 test.jar,解开后的目录结构如下: == |– META-INF | `– MANIFEST `– test `–Test.class 8) jar xvf test.jar 运行结果与 7) 相同,对于解压过程有详细信息显示,如: 创建:META-INF/ 展开:META-INF/MANIFEST.MF 创建:test/ 展开:test/Test.class 9) jar uf test.jar manifest.mf 在 test.jar 中添加了文件 manifest.mf,此使用 jar tf 来查看 test.jar 可以发现 test.jar 中比原来多了一个 manifest。这里顺便提一下,如果使用 -m 参数并指定 manifest.mf 文件,那么 manifest.mf 是作为清单文件 MANIFEST 来使用的,它的内容会被添加到 MANIFEST 中;但是,如果作为一般文件添加到 JAR 文件包中,它跟一般文件无异。 10) jar uvf test.jar manifest.mf 与 9) 结果相同,同时有详细信息显示,如: 增加:manifest.mf(读入= 17) (写出= 19)(压缩了 -11%) 4. 关于 JAR 文件包的一些技巧 1) 使用 unzip 来解压 JAR 文件 在介绍 JAR 文件的时候就已经说过了,JAR 文件实际上就是 ZIP 文件,所以可以使用常见的一些解压 ZIP 文件的工具来解压 JAR 文件,如 Windows 下的 WinZip、WinRAR 等和 Linux 下的 unzip 等。使用 WinZip 和 WinRAR 等来解压是因为它们解压比较直观,方便。而使用 unzip,则是因为它解压时可以使用 -d 参数指定目标目录。 在解压一个 JAR 文件的时候是不能使用 jar 的 -C 参数来指定解压的目标的,因为 -C 参数只在创建或者更新包的时候可用。那么需要将文件解压到某个指定目录下的时候就需要先将这具 JAR 文件拷贝到目标目录下,再进行解压,比较麻烦。如果使用 unzip,就不需要这么麻烦了,只需要指定一个 -d 参数即可。如: unzip test.jar -d dest/ 2) 使用 WinZip 或者 WinRAR 等工具创建 JAR 文件 上面提到 JAR 文件就是包含了 META-INF/MANIFEST 的 ZIP 文件,所以,只需要使用 WinZip、WinRAR 等工具创建所需要 ZIP 压缩包,再往这个 ZIP 压缩包中添加一个包含 MANIFEST 文件的 META-INF 目录即可。对于使用 jar 命令的 -m 参数指定清单文件的情况,只需要将这个 MANIFEST 按需要修改即可。 3) ”META-INF“没有具体意思,举个例子你就懂了:使用 jar 命令创建 ZIP 文件 有些 Linux 下提供了 unzip 命令,但没有 zip 命令,所以需要可以对 ZIP 文件进行解压,即不能创建 ZIP 文件。如要创建一个 ZIP 文件,使用带 -M 参数的 jar 命令即可,因为 -M 参数表示制作 JAR 包的时候不添加 MANIFEST 清单,那么只需要在指定目标 JAR 文件的地方将 .jar 扩展名改为 .zip 扩展名,创建的就是一个不折不扣的 ZIP 文件了,如将上一节的第 3) 个例子略作改动: jar cvfM test.zip test

B. v格式的文件用什么打开

是pdfv,用福昕打开,是视频的话就用迅雷播放器或者暴风影音打开

C. 手机里后缀是vf的是什么文件

VFP 常用的文件扩展名及其关联的文件类型.app 生成的应用程序 .frx 报表 .exe 可执行程序 .frt 报表备注 .pjx 项目 .lbx 标签 .pjt 项目备注 .lbt 标签备注 .dbc 数据库 .prg 程序 .dct 数据库备注 .fxp 编译后的程序 .dcx 数据库索引 .err 编译错误 .dbf 表 .mnx 菜单 .fpt 表备注 .mnt 菜单备注 .cdx 复合索引 .mpr 生成的菜单程序 .idx 单索引 .mpx 编译后的菜单程序 .qpr 生成的查询程序 .vcx 可视类库 .qpx 编译后的查询程序 .vct 可视类库备注 .scx 表单 .txt 文本 .sct 表单备注 .bak 备份文件

D. 视图文件的扩展名是什么

视图文件的扩展名是.vue,查询文件是.qpr。另外VF中各种文件的扩展名:

.pjx 项目

.pjt 项目备注

.dbc 数据库

.frx 报表

.frt 报表备注

.lbx 标签

.prg 程序

.dct 数据库备注

.dcx 数据库索引

.dbf 表

.fpt 表备注

.cdx 复合索引

.idx 单索引

.qpr 生成的查询程序

.qpx 编译后的查询程序

.scx 表单

.sct 表单备注

.fxp 编译后的程序

.mnx 菜单

.mpx 编译后菜单程序

.vcx 可视类库

(4)手机里面vf是什么文件扩展阅读:

VF常用命令:

ACCEPT 把一个字符串赋给内存变量

APPEND 给数据库文件追加记录

APPEND FROM 从其它库文件将记录添加到数据库文件中

AVERAGE 计算数值表达式的算术平均值

BROWSE 全屏幕显示和编辑数据库记录

CALL 运行内存中的二进制文件

CANCEL 终止程序执行,返回圆点提示符

CASE 在多重选择语句中,指定一个条件

CHANGE 对数据库中的指定字段和记录进行编辑

CLEAR 清洁屏幕,将光标移动到屏幕左上角

CLEAR ALL 关闭所有打开的文件,释放所有内存变量,选择1号工作区

CLEAR FIELDS 清除用SET FIELDS TO命令建立的字段名表

CLEAR GETS 从全屏幕READ中释放任何当前GET语句的变量

CLEAR MEMORY 清除当前所有内存变量

CLEAR PROGRAM 清除程序缓冲区

CLEAR TYPEAHEAD 清除键盘缓冲区

CLOSE 关闭指定类型文件

CONTINUE 把记录指针指到下一个满足LOCATE命令给定条件的记录,在LOCATE命令后出现。无LOCATE则出错

COPY TO 将使用的数据库文件复制另一个库文件或文本文件

COPY FILE 复制任何类型的文件

COPY STRUCTURE EXTENED TO 当前库文件的结构作为记录,建立一个新的库文件

COPY STRUCTURE TO 将正在使用的库文件的结构复制到目的库文件中

COUNT 计算给定范围内指定记录的个数

CREATE 定义一个新数据库文件结构并将其登记到目录中

CREATE FROM 根据库结构文件建立一个新的库文件

CREATE LABEL 建立并编辑一个标签格式文件

E. vf是什么

作为市场上最灵活和功能最强大的数据库管理系统,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数据库开发市场带来了革命性的变化。这些技术是:加入了Rushmore技术,它能从事许多难以想象的复杂工作。突然之间,带有以百万计数的记录的表格在PC数据库系统中不仅成为可能,而且可以非常容易地加以实现,无需转用其他比较昂贵的技术;Rushmore最重要的优点在于它是完全自动化的,不用用户花费精力和时间。因为有了Rushmore技术,再加上Fox天生的快速,即使在今天Visual FoxPro仍然是最快的桌面数据库引擎。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了。这些特性是:数据库容器(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 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 特性。ActiveX documents 允许用户在一个应用程序中编辑另一个应用程序的document。我们把Word文档嵌入或链接到Visual FoxPro中,就可以不离开Visual FoxPro编辑Word文档了。ActiveX controls 为开发人员提供了增加的系统功能的方法,典型的应用就是各类ActiveX控件的使用来加强用户界面。这里要说明的是Visual FoxPro不支持(7.0也不支持)“集装箱式的”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的这种能力是从5.0开始具有的,到了6.0的SP 3已经可以开发出多线程的组件了,这些在上文已经有过论述。以后的 Visual FoxPro 版本一定会对Automation,特别是Remote Automation有更好的支持,无论是开发server components,还是由Visual FoxPro充当客户程序。综上所述,Visual FoxPro是创建关键任务的、企业范围的、面向对象的单层次、双层次、多层次应用程序的重要开发工具,这些应用程序可以在本地或全球范围内进行配置。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编程的高尚境界!面向记录与面向集合之争根据笔者的浅薄认知,关系型数据库处理可以分为面向记录操作和面向集合操作。各种开发工具支持的客户端光标体系就是面向记录操作的,它们支持记录之间的绝对定位,更明白地说就是可以在记录之间导航,诸如: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开发多线程进程的内组件的能力,并增加了新的运行时刻库VFPnT.DLL(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 ServerASP 技术出现了,我们知道 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++ 6.0程序用了3.5秒、VB 6.0程序用了11秒、Java 1.1.5用了24秒、Visual FoxPro 6.0用了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都作为本地数据库的对象被管理起来,完美的衔接本地数据与远程数据。这种在客户端建立远程数据逻辑的做法,与最新的ADO.NET有相似之处!在三层构架中,Visual FoxPro可以充当任意一层的任务,但本人以为大中型系统的数据库部分应以网络数据库为主。客户端界面用Visual FoxPro也是可以的,但一般限于企业内部,在Internet上我们通常使用IE作为客户界面。在三层构架中Visual FoxPro最胜任中间层的开发,它简单(开发难度与普通的Visual FoxPro项目相差不大)、快速的字符串生成、支持COM技术、它支持(MTS)COM+技术、它支持XML(Visual FoxPro 7.0提供3个与XML有关的函数)、它具有强大本地数据引擎、灵活的数据处理方式、它支持多线程的服务组件的开发。可能有人要问:用ASP+脚本语言一样可以开发Web系统,何必加个中间层。的确,目前在市面上与多讨论Web的书都直接使用脚本语言来开发整个系统,这是十分不正确的做法,甚至有写书还说硬件越来越快,因此使用脚本语言来开发整个系统并没有什么关系。会说出这样话的作者通常都是没有实际开发Web应用经验的人。脚本语言,如VBScript是一种解释性语言,运行效率很低,他们只合适作为胶水程序。开发Web系统正统的做法是:把应用逻辑编写成COM、DCOM对象,然后用少量的脚本语言来驱动/使用这些对象。这样系统开发时工作量会大一些,但它符合开发任何数


赞 (0)