使用 Visual FoxPro 不仅能建立独立的应用程序,而且可以建立大型的企业级商务解决方案。可将 Visual FoxPro 的特性和其他的 Windows 应用程序集成在一起,建立一个强大的综合性解决方案来满足应用程序的需求。
在开发一个大型商务系统时,在哪些地方使用 Visual FoxPro,如何使用 Visual FoxPro?本章将对这些问题进行阐述。在这里,对完成特殊任务所需的过程信息不作详细阐述,而主要综合介绍 Visual FoxPro 的一些特性,这些特性主要适用于企业级的解决方案。
本章内容要点:
用 Visual FoxPro 建立的许多应用程序对于某一特定的商务需求都是自成体系的解决方案。例如,可以建立一个 Visual FoxPro 应用程序来对自己的顾客进行追踪,不仅在程序中可以包含顾客的数据库信息,而且能包括管理订单、发票等的实用工具。使用 Visual FoxPro 的可用特性,包括数据库引擎、可视化设计工具和报表功能,可以满足应用程序的所有需要。
不仅如此,在使用两个以上开发工具建立的大型应用程序中,Visual FoxPro 仍可以作为其中的一部分发挥重要作用。在我们称之为“企业级开发”的过程中, Visual FoxPro 允许您最大限度地发挥每个产品所特有的功能。企业开发可能很简单,如在 Visual FoxPro 中维护一个顾客数据库、在 Microsoft Word 中建立邮件合并等;也可能很复杂,如使用客户/服务器数据库、自动服务、电子邮件等等。
由于如下的特性,在建立企业级商务解决方案时,Visual FoxPro 的确算得上一个理想的工具:
在整个企业级应用程序中,Visual FoxPro 利用这些特性发挥不同的作用:
选择 Visual FoxPro 的使用方案主要依赖于建立应用程序的目的,以及用户想要使用什么样的应用程序。
针对以上 Visual FoxPro 的使用方案,下面的章节将提供一些想法和建议。但是,不要认为在这里提供的应用程序是唯一的,此处的建议仅仅是您设计和开发自己的企业级解决方案的起点。
作为一个 Visual FoxPro 的开发人员,很自然会使用可视化的设计工具来开发程序。例如,可以使用 Visual FoxPro 的表单、菜单和报表来设计自己的用户界面。此外,在使用 Visual FoxPro 开发程序时,最有可能的情况就是把数据用 Visual FoxPro 表的形式存储起来。
在开发企业级应用程序时,集成 Visual FoxPro 的一种途径是使用 Visual FoxPro 中的可视化设计工具,然后利用其他产品的性能增强这些工具的功能。另一种途径是使用 Visual FoxPro 建立程序的外观,然后利用其他程序或非 Visual FoxPro 数据存储选项来扩充数据的存储量。通过将数据移到一个数据库服务器上,升迁 Visual FoxPro 中的数据。
Visual FoxPro 控件基类的设计可以满足绝大多数应用程序界面的需要。为了能够建立一个标准的 Windows 应用程序,Visual FoxPro 提供了所有的基本控件和界面元素。但是,在开发过程中,有时会感到仅仅这些基本元素在程序中仍然不够的。如果出现这种情况,可以建立子类或者使用 ActiveX 控件来扩展 Visual FoxPro 中可视化设计工具的功能。
Visual FoxPro 的一个特别强大的功能是可以在基类的基础上建立子类。通过建立一个或者多个子类,能够以任何方式定制基本的 Visual FoxPro 控件,以满足应用程序的需要。这种能力体现在:所建立的新对象或者新控件综合了其他基类的特性。例如,Visual FoxPro 中的表格控件不仅包含自身容器的属性和方法程序,而且也包含那些在网格中出现的对象(如按钮、文本框等等)特性。
同样,通过在基类控件的基础上派生子类,可以建立一些具有新特性的对象,以次扩展 Visual FoxPro 的性能,也可以将若干对象的特性进行组合作到这点。例如,可以在文本框上添加边框或者三维效果来进行可视化,也可以将一个图象控件、按钮和文本框组合在一起创建一个位图浏览控件,用户可在该控件上遍历一系列的 .BMP 文件。用这种方法建立用户自定义类,可以帮助开发人员将应用程序中的控件标准化,对管理企业级开发程序很有帮助。有关建立子类的详细内容,请参阅第三章“面向对象程序设计”。
在 Visual FoxPro 中使用子类创建新控件的另外一个方法是使用 ActiveX 控件(.ocx 文件)。由于这些控件是独立于 Visual FoxPro 开发的,因此不仅能与 Visual FoxPro 集成,而且同样适用于其他 Windows 应用程序。
实际上,ActiveX 控件是独立的组件,能与应用程序实现无缝集成。使用 ActiveX 控件有以下优势:
简而言之,使用 ActiveX 控件在扩展应用程序的时候,不仅可以集成 Windows 的功能,而且可以在开发的应用程序之间保持一致的风格和特性。有关使用 ActiveX 控件的详细内容,请参阅第十六章“添加 OLE”;有关建立用户自定义 ActiveX 控件的详细内容,请参阅第二十八章“访问 Visua FoxPro API”。
开发应用程序时,有时会发现有些程序对于解决某些任务非常合适。例如,Microsoft Word 在邮件合并上具有无与伦比的优势,而 Microsoft Excel 在计算复杂的公式并且据此建立图形、图表方面极为方便。
和在 Visual FoxPro 中模拟以实现这些功能相比,更可行的方法是将这些软件集成到应用程序中,将应用程序变为一个企业级的解决方案。这种方法可以为满足所开发的应用程序的需要找到最合适的工具,并充分利用它。
用如下方法,可以将其他应用程序的功能与 Visual FoxPro 集成:
以下章节将针对扩展 Visual FoxPro 性能的各种方法进行详细阐述。
有一些 Visual FoxPro 向导允许将 Visual FoxPro 中的数据和其他的 Windows 应用程序集成在一起。例如,使用“邮件合并向导”可以向客户发送信件。当运行该向导时,首先指定包含所需的 Visual FoxPro 数据的表或者视图,然后将数据以适当的文件格式导出(例如用逗号分隔等),或指定使用 Visual FoxPro 的 ODBC 驱动程序来访问数据的文字处理程序。如果使用的程序是 Microsoft Word,向导将启动这个字处理程序,建立一个空白的合并文档,并显示“邮件合并”工具栏,便于您将域与 Visual FoxPro 数据链接。
类似地,使用 Microsoft Excel 和 Microsoft Query 时,可以用数据透视表来分析数据,数据透视表将数据按列进行排列,还可以用不同方式查看。通过使用 Visual FoxPro 中的“数据透视表向导”,可以将应用程序中的数据作为 Excel 的数据源,并在 Excel 中生成该数据透视表。
与其他应用程序相互作用的更为有效的方式是使用自动服务。使用 Visual FoxPro 程序,可以访问其他应用程序中的对象,然后通过对属性的设置和方法程序的调用来控制对象。例如,Microsoft Excel 中存在一个应用程序对象,如工作表、行、列及单元格,可以直接对这些对象进行操作,包括在其中设置和读取数据。另外,也可以使用该程序中可用的全部命令来控制整个应用程序对象。例如,通过管理 Excel 中的应用程序对象,可以打开、保存以及打印工作表,激活 Excel 的图表向导,等等。
自动服务之所以能作为特殊而有效的连接 Windows 程序的手段,主要是如下几个原因:
在和其他程序协同工作时,由于自动服务是一个开放的工具,所以特别有效。本质上,自动服务就是使其他应用程序中的命令和数据对你可用,以便选择最适于您的应用程序的方式。
一个示例方案可以描述如何将若干 Windows 程序集成在一起。假设将顾客和销售数据存储在 Visual FoxPro 中,需要建立一个报表来显示季度销售情况。
方案之一是,使用自动服务将 Visual FoxPro 中的销售数据复制到 Microsoft Excel 工作表的单元格中,然后激活 Excel 的图表向导来创建该数据的一个图表,并将之复制到 Windows 的剪贴板上。然后仍然使用自动服务,激活 Microsoft Word 创建或者打开一个销售报表文档(如果以新文档来创建,则可以插入 Visual FoxPro 中存储的标准文本),然后把 Excel 建立的图表粘贴上去。
有关使用自动服务将 Visual FoxPro 集成到企业级解决方案中的方法,以上只是一种方案。当您对所用应用程序里的对象和方法程序逐渐熟悉时,可以想出许多的好方案来提高应用程序的性能。有关 自动服务的详细内容,请参阅第十六章“添加 OLE”中的“应用自动服务管理对象”。
无论是考虑速度,还是考虑数据库大小,Visual FoxPro 的数据表和索引容量对应用程序而言都是绰绰有余的。但是有候,需要使用其他格式的数据来扩展 Visual FoxPro 的功能。在以下情况会遇到这种问题:
如果所需的数据是以工作表、字处理文档或其他 Windows 程序的格式存储的,则可以使用自动服务来访问它。例如,如果应用程序需要一组格式化的信件,那么可以使用自动服务。这时,这些信件可能以 Microsoft Word 文档的形式存储,应用程序需要使用自动服务来激活 Word,打开相应的信件,根据需要插入或替换文本。
访问非 Visual FoxPro 数据的更为常用的途径是使用 ODBC。ODBC 驱动程序允许和其他程序格式(通常是数据库程序)中的数据进行连接,然后使用标准的 SQL 命令对数据进行查询或编辑。
例如,您可能对自己的应用程序的安全性和事务处理过程最为关心,因此想使用 Microsoft SQL Server 来存储数据。为了访问数据,可以使用 ODBC 驱动程序定义一个对 Microsoft SQL Server 的连接,然后就就象数据以 Visual FoxPro 格式存储一样,可以对其进行一般的查询(和其他的 SQL 命令)。
其他的应用程序可以访问同样的数据,利用同样的技术性能。例如,一个 Microsoft Excel 工作表能够从同样的 SQL Server 服务器中获取所需数据。这样,工作表不仅可以利用同于您的应用程序的优越性能,而且还具有服务器的安全性和事务处理特性,而这些特性是在 Excel 的工作表中是没有的。
在某些情况下,可能要求更高,需要使用 ODBC 访问的数据源所特有的 SQL 命令。例如,Microsoft SQL Server 允许建立并运行存储过程,这些过程可以对服务器(而不是您的应用程序)上的数据进行操作。利用存储过程可以向数据库服务器发送“本地”的 SQL 语句。Pass-through SQL 命令还允许对服务器执行一些系统管理任务。某些情况下,这些命令的执行速度比在 Visual FoxPro 中执行类似的 SQL 语句要快。
要想了解有关扩展 Visual FoxPro 数据存储功能的详细信息,可按照下表参阅相应文档。
若要查询 | 请参阅 |
自动服务 | 第十六章“添加 OLE”中的“应用自动服务管理对象” |
使用 ODBC 访问数据 | 第八章“创建视图”中的“访问远程数据” |
在客户/服务器环境下使用 Visual FoxPro | 第十九章“设计客户/服务器应用程序” |
在数据存储时,可以将其保存在 Visual FoxPro 的表中,也可以保存在象数据库服务器这样的平台上。有时也能以两种方式保存:在开发过程中,先把数据保存在 Visual FoxPro 的表中,当数据库逐渐庞大时,再把它转移(或升迁)到其他的平台上。
例如,可以将所有数据保存在本地的 Visual FoxPro 表中,来创建应用程序的原型。这样做具有很大的灵活性,使您在开发程序的过程中,很容易对表、视图和索引进行修改,避免了在数据库服务器上管理表的复杂性。而且,在本地表上保存示范数据,可以方便地测试表单、报表和其他程序。当数据库结构已经完成后,便可以将数据升迁到数据库服务器上,同时完成应用程序的产品化。
另外一种可行的方法是,根据实际需要将数据保存在本地的 Visual FoxPro 表中。只有当数据库变大时,再升迁数据,同时可使用数据库服务器提供的优化性能。升迁数据库的最佳时机取决于许多因素,包括数据库的复杂性,本地计算机或者网络的性能以及应用程序的要求。
最后,可以在 Visual FoxPro 中完成数据库的原型开发,然后为了和其他可以访问数据库服务器的应用程序之间共享数据,升迁此数据库。同样,为了获得服务器的安全性和事务处理等特性,也可以升迁数据库。
有关数据库升迁的详细内容,请参阅第二十章“升迁 Visual FoxPro 数据库”。
将 Visual FoxPro 集成到一个企业级解决方案的另外一个的方法是:把它作为一个组件来使用,而不是作为主程序。实际上,可以把 Visual FoxPro 作为应用程序的后台,前台程序可利用其他的产品编写。在这种情况下,用户不必直接和 Visual FoxPro 打交道,相反,用户界面使用其他应用程序提供的工具生成,只是在后台通过与 Visual FoxPro 通讯来获取或操作数据。
由于 Visual FoxPro 可发挥其数据库引擎的优势(该工具可快速对其他程序的数据的访问),因此 Visual FoxPro 在这种工作方式下会运行得很好。此外,Visual FoxPro 很方便地就可以把自己的对象和命令(包括您建立的自定义对象)提供给其他程序使用。
为了发挥 Visual FoxPro 的优点,为开发企业级应用程序采用的一种技术手段是使用 Visual FoxPro 的数据库引擎来存储和管理数据。和其他程序相比,该方法可提供高性能的存储和查询能力。
使用 Visual FoxPro 的 ODBC 驱动程序,程序可以连接 Visual FoxPro 中的数据。该驱动程序使 Visual FoxPro 的数据库引擎对标准的 SQL 命令完全开放。
例如,应用程序可能采用 Microsoft Excel 作为复杂的数据分析的计算工具。如果操作的数据使用频繁,则将其存储在数据库中比保存在工作表中可能会更好。这时,可使用 Visual FoxPro 的 ODBC 驱动程序将工作表和数据库连接起来,然后提取相关的数据,并将其显示在工作表中,以备进一步处理。
另外一个示例是一个公告牌的应用程序,如在机场或会议中心里。可以使用多媒体技术编程进行信息显示。但是如果程序中的某些数据经常变动,可能在换页时会带来麻烦。这时,可以通过 ODBC 驱动器将显示程序和 Visual FoxPro 数据库连接,然后在运行时刻提取所需要的数据。
有关详细内容,请参阅安装在 …\Vfp98\Distrib\Src\System 目录下的“Visual FoxPro ODBC 驱动程序帮助”(Drvvfp.hlp)。只要在 Visual FoxPro 安装过程中安装了 ODBC,那么该文件在 ODBC 程序组中很容易找到。
除了将 Visual FoxPro 的数据提供给其他程序使用,作为企业级解决方案中的一部分外,还可以开放 Visual FoxPro 中的对象和命令。其他程序可以调用 Visual FoxPro 的方法程序,设置 Visual FoxPro 对象(不仅是基类对象,还可以是自定义类的对象)属性。
例如,可以在 Microsoft Excel 中建立一个应用程序,该程序将数据存储在 Visual FoxPro 的数据库中。除了进行数据读写这样简单的操作外,Excel 还可以调用 Visual FoxPro 命令,将一个表单作为对话框显示,可以向对话框输入数据作为视图的参数。
另外一个使用 Visual FoxPro 对象的方法是创建一个自动服务程序(Automation Server)。这种方法允许您建立特定应用程序的对象,这些对象的功能几乎包括了在 Visual FoxPro 环境下编程所能完成的所有功能,而且还可以发布这些服务程序以近一步对其进行利用。
对于自定义的服务程序,用途之一是建立一个对象,该对象包含一系列商务规则,以确保从其他应用程序传送来的数据的完整性。例如,可以在 Visual FoxPro 中建立一个对象来存储雇员信息,该对象不仅能保证从程序传送来的数据的有效性,而且检查用户的访问级别,确保有足够权限的用户才能更改雇员信息。
对于涉及复杂逻辑关系的更改或者读取信息操作,自定义服务程序也能够建立对象。例如,一个订单输入对象不仅能够存储订单,而且可以维护一个订单事务日志,更新库存清单,计算销售佣金,等等。
这类自动服务程序对于三层结构的企业级应用程序来说,是一个理想的“中间层”。在这个模型中,数据形成了最底层,应用程序则作为最高层,而主要功能是由中间层来完成的。中间层提供了一个特殊的、不依附于应用程序的数据视图,同时集成了商务规则(或者其他数据处理功能),而这些功能仅仅靠应用程序或者数据是无法实现的。
有关建立定制的自动服务程序的详细内容,请参阅第十六章“添加 OLE”中的“创建自动服务程序”。
除了可以用 Visual FoxPro 建立应用程序外,还可以用它来建立和维护一个数据仓库,或者说是报表所需数据的优化版本。若要建立一个数据仓库,首先需要复制报表所需的数据,然后提交给所需的用户。通过将这些数据从原有数据中独立出来进行维护,可以:
一个数据仓库是建立数据瞬间的数据“快照”。您可以周期性的对数据仓库进行数据刷新,根据应用程序产生报表的需要定期更新。
例如,假设建立了一个应用程序来管理图书馆,其中包括一个库存清单。在工作日里,系统主要用于顾客借出和归还资料,以及对系统内部的资料进行查找和归位。除了管理这些顾客的事务外,管理人员还想对图书馆进行分析,了解哪些资料最受欢迎,那些书已经过时,等等。
为了有助于分析,应用程序可以在事务信息之外建立一个数据仓库,应用程序可以定期的存储数据(如每天晚上),而后,管理人员在不影响白天系统正常运行的情况下,在数据仓库的基础上建立一些查询。此外,数据仓库可以排除顾客使用图书馆的详细信息,因为这些信息对分析没有用处,并被认为是保密的信息。
为了从数据仓库中获得更大的益处,可以在一个服务器上建立数据仓库,使之和原始数据分离。如果数据仓库和原始数据都在同一个服务器上,仍可以从数据仓库中这些优化的数据中获得帮助。但是,当用户的查询数据仓库时,可能会发生大量的网络负担,这将影响原来系统的正常运行。
在建立数据仓库时,可以简单地把系统原始数据文件复制到数据仓库的并行文件上。此外,还可以在数据仓库中将数据的结构重新进行结构优化,以便报表的生成。例如,可以为数据仓库中的数据建立索引,减少报表要处理的工作。
另外一个示例是:通常为了避免数据重复,活动应用程序的数据都应该规范化。在数据仓库中,把数据合并在一个表中更为有用,这样没有经验的用户不用自己来联接表,从而建立报表更为方便。
为满足应用程序的需要,可以使用数据仓库中的细节层次。为了使用的灵活性,在数据仓库中存储数据时,这些数据的层次应该和程序运行中使用的数据保持一致。但是如果用户只想建立一个总结报表(象电子表格或者图形),则应该将应用程序中的具体数据屏蔽掉,在数据仓库中只保存总结性的数据。
如果您的企业级解决方案想要建立一个 Internet 上的 WWW 服务器,则可以将 Visual FoxPro 作为应用程序的搜索引擎。对于能够访问您的 Web 服务器的任何人,无论是来自 Internet 或是通过公司的内部网,都可以很方便地访问您的 Visual FoxPro 数据库。
例如,假设作为企业内部网的内容之一,需要方便地使用一个雇员目录。雇员可以将他们的浏览器指针指向“搜索雇员”页面,该页面看起来象 Visual FoxPro 的一个表单,其中包括了一个输入搜索条件的文本框。为了执行一个搜索,用户可以输入雇员名字、电话分机、部门、职称以及其他所可用的信息,然后选择“开始搜索”按钮。过了一会儿,将会看到一列符合搜索条件的雇员名单。然后,可以将该名单保存为文本文件,导入到其他程序中,如字处理程序中。
一般的,为了使 Visual FoxPro 作为 Web 的一个信息服务器,需要如下组件:
Visual FoxPro 在 Web 上的搜索事件序列一般包括:
如果已经建立了 Web 页面,那么处理的绝大多数步骤是相似的。例如,您可能已经了解了如何建立 Web 页面,或者您不熟悉 Web 页的设计,那么您都会感觉创建这些页面的处理过程相当容易。
有关使用 Visual FoxPro 作为 Web 搜索引擎的详细内容,请参阅 Studio …\Samples\Vfp98\Servers\Foxisapi 目录下的示例程序 Foxisapi.dll。并参考该目录下的 Readme.txt 文件,以了解运行该程序的详细内容。