主题:[讨论]单机程序如何升级到客户/服务器程序?
masachik
[专家分:540] 发布于 2006-10-11 10:20:00
我已有一个单机程序,里面有数据库表也有自由表。现在想实现多机操作功能,不知该做哪些处理?希有经验的前辈们告之。谢谢!
回复列表 (共53个回复)
41 楼
foxdb [专家分:1830] 发布于 2008-10-29 03:42:00
我来从ABC开始说起起吧...因为我有同样的经历..(曾经成功用VFP开发过80个网络工作站的商业运用系统)...
A:指定一台电脑SERVER做文件服务器,设定一盘符下的目录存放“数据库表”和“自由表”。并设成共享。
(例如:D:\USER\USER\ 下面的文件为 *.DBF *.CDX *.DBC 等等)
B:另外几台USER1、USER2、USER3、USERx...电脑为工作站,并影射同盘符一路径到文件服务器的共享。
(例如:F:----> \\SERVER\USER 这样 USER1...x的F:盘就是F:\USER\ 下面的文件为 *.DBF *.CDX *.DBC 等等)
C:将单机版程序中所有和数据库相关的路径都批量改为网络路径。
(例如:F:\USER\)
D:如对库没有“追加”“修改”“物理删除”等操作的可修改设为“共享”打开即可,否则操作前必须增加锁库处理程序,或要设为“独占”打开。对记录“修改”的可只锁记录。
E:对多个工作站同时突发修改同一条记录时,由于“数据库表”和“自由表”不同于SQL,没有突发请求修改的自动缓冲列队存储功能,所以你只能设时间周期循环锁定记录才能实现“修改”等操作。
F:所有对库和记录的操作必须设定“状态”返回码以校验操作是否成功,处理好数据的一致性。并给或者告知用户相应的处理提示!
如果你做到以上几点,那么恭喜你的单机版软件就已升级为网络版了。。。(另外你还没有用到SQL数据库 所以没有楼上那些说的那么难。。只要你去多试。。。)。。。你如要做得更好。。那你就和我交个朋友吧!。。。。
42 楼
rh2588 [专家分:30] 发布于 2008-10-30 23:12:00
谢谢41楼。
再请教一个问题,如果要对服务器上的某个表要索引,该怎么处理?因为其他用户已经打开该表使用了。
43 楼
foxdb [专家分:1830] 发布于 2008-10-31 02:12:00
答42楼问题!
1、首先,网络状态下对库的所有操作都是按规定的“时间周期循环打开、锁定、操作、解锁释放和关闭”的(也就是说库不是常开)。
2、由于建立了“返回码”处理响应等级制。当“维护程序”“重建索引”操作时,根据“维护程序”的级别最高,所以会第一时间响应处理。
3、只要“维护程序”独占打开成功(可设两次打开以防索引文件坏了)就可进行“重建索引”了。
4、其他级别低的用户操作就会看到“数据维护请等待!”的提示!
5、另外,还有个问题是当有其他用户意外“死机占库”问题要会处理。
44 楼
txj3230626 [专家分:20] 发布于 2008-12-01 21:45:00
用VFP作C/S数据库系统:
1、在服务器安装SQL-server
2、将VFP数据库升迁到SQL-server中
3、在VFP客户端建一ODBC数据源连接SQL-server中升迁的数据库
4、客户端操作数据库表时先用sqlconnect('数据源','用户名','用户密码')连接数据库;
用sqlexec(连接名,'sql语句')操纵数据,如:更新、插入、删除,查询等。
用此种方法建立的c/s系统安全、稳定、高效,笔者使用多年,感觉不亚于PB或DELPHI。
45 楼
txj3230626 [专家分:20] 发布于 2008-12-01 21:46:00
用VFP作C/S数据库系统:
1、在服务器安装SQL-server
2、将VFP数据库升迁到SQL-server中
3、在VFP客户端建一ODBC数据源连接SQL-server中升迁的数据库
4、客户端操作数据库表时先用sqlconnect('数据源','用户名','用户密码')连接数据库;
用sqlexec(连接名,'sql语句')操纵数据,如:更新、插入、删除,查询等。
用此种方法建立的c/s系统安全、稳定、高效,笔者使用多年,感觉不亚于PB或DELPHI。
46 楼
masachik [专家分:540] 发布于 2008-12-05 22:56:00
[quote]我来从ABC开始说起起吧...因为我有同样的经历..(曾经成功用VFP开发过80个网络工作站的商业运用系统)...
A:指定一台电脑SERVER做文件服务器,设定一盘符下的目录存放“数据库表”和“自由表”。并设成共享。
(例如:D:\USER\USER\ 下面的文件为 *.DBF *.CDX *.DBC 等等)
B:另外几台USER1、USER2、USER3、USERx...电脑为工作站,并影射同盘符一路径到文件服务器的共享。
(例如:F:----> \\SERVER\USER 这样 USER1...x的F:盘就是F:\USER\ 下面的文件为 *.DBF *.CDX *.DBC 等等)
C:将单机版程序中所有和数据库相关的路径都批量改为网络路径。
(例如:F:\USER\)
D:如对库没有“追加”“修改”“物理删除”等操作的可修改设为“共享”打开即可,否则操作前必须增加锁库处理程序,或要设为“独占”打开。对记录“修改”的可只锁记录。
E:对多个工作站同时突发修改同一条记录时,由于“数据库表”和“自由表”不同于SQL,没有突发请求修改的自动缓冲列队存储功能,所以你只能设时间周期循环锁定记录才能实现“修改”等操作。
F:所有对库和记录的操作必须设定“状态”返回码以校验操作是否成功,处理好数据的一致性。并给或者告知用户相应的处理提示!
如果你做到以上几点,那么恭喜你的单机版软件就已升级为网络版了。。。(另外你还没有用到SQL数据库 所以没有楼上那些说的那么难。。只要你去多试。。。)。。。你如要做得更好。。那你就和我交个朋友吧!。。。。
[/quote]
这不愧是单机版改网络版的一种方法。估计这种方法在作为工作站的机器上都要安装应用程序并做B项所说的设置。我将单机版程序改为多机版用的是另一种方式:应用程序与数据文件均安装在同一台机器上,分别将它们设为不同的共享目录,其他机器只运行共享的应用程序就行了。要参看该多用户程序,可到我的网盘下载。
[url=http://sigeen.atedu.net/index.aspx]我的网盘[/url]
41楼所说方法的E、F两项,不知具体解决方式,能否祥细一点。
47 楼
hispec [专家分:0] 发布于 2008-12-17 22:08:00
下面的文字是从“VFP6.0HELP.CHM”中摘录的:
-----------------------------------------------------
准备升迁
所谓升迁就是使用与原来的 Visual FoxPro 数据库相同的表结构、数据和内在的许多其他属性,在远程服务器上创建一个新的数据库。利用升迁可以把现有的 Visual FoxPro 应用程序转变为一个客户/服务器应用程序。有关升迁的详细内容,请参阅第二十章“升迁 Visual FoxPro 数据库”。
------------------------------------------------------
49 楼
dongyu3777 [专家分:0] 发布于 2009-05-31 17:43:00
我也是初学者,对此问题也是感兴趣
50 楼
sthk123 [专家分:10] 发布于 2009-06-03 14:19:00
我也在为这个问题困扰着,象这样的问题,一般的书上是看不到解决方案的,因为真正的知识那些写书的人也不太了解,只有自己钻研,尽管过程会很辛苦,但正因如此,会有探索的乐趣,也会有深刻的印象。
我来回复