在VFP中建立C/S机制
文章作者 100test 发表时间 2011:07:31 21:25:59
来源 100Test.Com百考试题网
一、C/S的应用形式
在应用中,人们多把C/S的应用程序分成两部分:让客户程序驻留在网络的前端工作站(一台微机)上,服务器处理程序则在网络的后台,其分布结构见图1。当客户(在工作站上)通过请求的方式提出了所需要的服务时,服务器不必关心客户程序的功能,只需响应请求就行。
在这种结构中,服务器的硬件必须具有足够的处理能力,这样才能满足各客户的要求。
从概念上看,“服务器”的含义非常广泛,数据库服务器只是其中的一种。数据库服务器至少应提供对数据的存取、加工、处理等服务,同时还要提供完善的安全保护及数据的完整性等处理,并允许多个客户同时访问同一个数据库。因此,客户可以不用考虑对数据的安全、优化、完整性等基础处理,只需专心自己的工作。
客户应用程序除了向服务器提出请求外,还要分析从服务器返回的信息(包括数据和指令),并据此作一些再处理(如向操作者显示相应的数据、要求补充输入一些数据等)。
中介(MiddleWare)是C/S系统中的一种系统软件,它负责链接客户与服务器。客户与服务器联接的最底层是网络的硬件,但对应用级的程序员来说,关心的焦点还是它们在软件上的通信链接。因为C/S的环境复杂,而且涉及多种规程及协议,所以还必须依靠中介软件才能有效地降低工作难度。中介软件能够把使用者与复杂的通信规程、硬件平台及操作系统隔开,数据通过中介在客户与服务器间流动,客户与服务器通过中介软件进行平稳互访,这种方式无疑大大降低了编程者的技术难度及工作量。
目前已出现了很多有关中介的标准及软件,我们在VisualFoxPro上见到的就是ODBC。它处在客户与服务器之间,有效地隐蔽了C/S操作的复杂过程。
二、设计C/S系统的基本原则
这里只考虑客户与服务器分别在不同硬件平台上的C/S系统(即基于网络的C/S系统),它们在设计时应遵循以下原则:
1.尽量让客户机完成针对特定用户的事务处理
因为服务器由多个客户机共享,如果把每个用户的特定处理都放在服务器上,就会增大服务器的工作量,因而降低其响应速度,延长客户申请的等待时间,所以尽量让客户机完成针对特定用户的事务处理,目的是为了减轻服务器的负担,提高C/S系统的整体性能。
2.尽量让服务器管理全部的共享资源
可共享的资源包括数据、部分外设(如扫描仪、打印机等)及基础服务处理(如通信),这些都应由服务器来管理,以保证各用户都能享用。对于共享数据,由服务器集中处理还有助于保证数据的完整性、一致性和安全性。
3.尽量减少客户与服务器间传送的数据量
在网络间传送数据,可能产生数据错误、丢失、延时、故障等问题。数据传递得越多,产生的问题、要求恢复的可能性也就越大。而且网络上堆积了大量数据,必然会降低系统对其他客户机的反应速度,同时影响客户之间及客户与服务器间的通信(通信也是一种共享资源)。所以,减少网络中数据的传递量,有助于保证C/S系统的整体性能。
4.坚持局部数据在局部存储和管理
这是为了减少网络上的数据传输量、减轻服务器的压力、增强服务器对请求的响应,提高C/S系统的总体性能。
根据上述原则,在做基于数据库的C/S系统设计时,可以把接口表示部分(如输入、输出界面)放在客户机上,把数据的管理部分(如查询、存储、更新、优化等)放在服务器上。对其他处理逻辑,则要根据具体情况进行分析,例如对于计算密集型的处理,可把计算部分放在客户机上,而有关数据特性的一般约束处理(如完整性、安全性、一致性等)则可放在服务器上。
对于数据的分布,也应作妥善安排。对于提供给各客户共享的数据,应放在服务器上(作为远程数据来处理);而对于各自的独用数据,则应放在自己的客户机上。
三、VisualFoxPro中建立C/S的机制
用VisualFoxPro构造C/S系统时,用ODBC作中介软件,由ODBC完成客户与服务器间的通信。这时各应用程序都通过各自的驱动程序与数据库相联,ODBC通过自身的驱动程序管理器来管理ODBC与驱动程序间的交互,程序员则可以使用相同的程序调用来实现与不同数据源的通信。
目前,Windows下的ODBC驱动程序和驱动程序管理器均以DDL(动态数据链接库)的形式实现。在VisualFoxPro的ODBC支持下,客户的应用程序可以实现以下功能:
①与(远程)数据库建立或解除联接;
②VisualFoxPro可通过当前已有的驱动程序与Oracle7.0、SQLServer、MSParadox等数据库联接。其他种类的数据库只要能提供自己的驱动程序,也能与VisualFoxPro相联;
③对远程数据库进行常规操作(如修改、查询等),并获取相应的操作结果;
④接收以ANSIError为标准的错误信息;
⑤对远程数据库上的表、记录、视图、索引等进行检测;
⑥向各用户提供统一的登录界面。
VisualFoxPro是C/S的前端开发工具,它通过ODBC对后端数据库进行存取的方法有两类:SPT(SQLPass-Though)和RemoteViews(远程视图)。SPT提供的函数类似低级文件函数,用户可用此直接访问后端数据库。用户使用SPT时,需用一组以SQL打头的函数来编写“打开联接”、“错误检测”、“命令传递”等指令。VisualFoxPro中的视图有两种:本地和远程,操作时可一视同仁。远程视图在ViewDesigner中创建,这时需说明远程数据库中要访问或修改的“部位”及范围。当这个视图建立后,我们就可以像使用VisualFoxPro的一个局部表一样,用“日常”的VisualFoxPro命令对其操作。
访问后端数据库时,必须先通过联接。在VisualFoxPro中,通过联接可以创建远程视图,修改其属性则可以优化各部分间的通信。VisualFoxPro中的联接有两种:隐含联接和命名联接。这里联接被当作对象来处理,以下是联接中常用的一些属性:
属性名内容说明
PassWord联接时用的口令
DataSource通过ODBC所联接数据源的类型
PacketSize确定联接时所用网络数据包的大小
ConnectString用于联接注册的字符串
Asynchronous确定所用联接是同步还是异步
ConnecName建立游标时所用联接的名字
UserID用户标识
Shared确定联接时可否共享
PatchMode确定批模式
……
在用SPT访问后端数据库时,必须使用命名联接。
在一般的应用中,可以将远程视图与SPT结合使用。可在本地数据库中定义后端数据源的远程视图,然后通过Form(或FormSet)对已联数据源进行日常操作。这是一种简洁、实用的C/S系统应用。