主题:[回答]单机程序如何升级到客户/服务器程序?和VFP程序如何运行于服务器?的老问题!
foxdb
[专家分:1830] 发布于 2008-10-30 18:12:00
这个问题在本论坛讨论了尽两年还没结帖,还有人问,真是不可理解!所以发一新帖回答大家!
答:masachik 的问题
我来从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数据库 所以没有楼上那些说的那么难。。只要你去多试。。。)。。。你如要做得更好。。那你就多与我联系!。。。。
答:nhcherry 的问题(在数据库文件夹不共享的情况下能否指定服务器IP取存数据呢?)
在数据库文件夹不共享的情况下,不能访问到数据文件,要设为共享才行,可以用IP地址影
射,(例如:F:----> \\192.168.1.123\USER 这样 USER1...x的F:盘就是F:\USER\ 下面的文件为 *.DBF *.CDX *.DBC 等等)如果你一定要“不共享”又要存取及共用数据库的话,我也有一个办法,那就是“用Winsock控件在VFP中进行编程”给个“示范代码”你参考,如你感兴趣我可进一步。。。
实现代码
1.客户端
■表单的 Init 事件:
public strData
strData = ""
thisform.tcpClient.RemoteHost = "192.168.1.123"
thisform.tcpClient.RemotePort = 1001
■“连接”按钮.Click 事件
thisform.tcpClient.object.Connect("192.168.1.123",1001)
this.Enabled = .f.
■TcpClient.DataArrive 事件
*** ActiveX Control Event ***
LPARAMETERS bytestotal
thisform.tcpClient.Object.GetData(@strData)
thisform.txtOutput1.Value = strData
■TxtSend1.InteractiveChange 事件
thisform.tcpClient.Object.SendData(this.Value)
2.服务端
■表单的 Init 事件:
public strData
strData = ""
thisform.tcpServer.Object.LocalPort = 1001
thisform.tcpServer.Object.Listen
■TcpServer.ConnectionRequest 事件
*** ActiveX Control Event ***
LPARAMETERS requestID
If thisform.tcpServer.OBJECT.State <> 0
thisform.tcpServer.OBJECT.Close
endif
thisform.tcpServer.OBJECT.Accept(requestID) 常数 值 说明
sckClosed 0 关闭(默认)
sckOpen 1 打开
sckListening 2 侦听
sckConnected 7 已连接
sckError 9 发生了错误
■TcpServer.DataArrive 事件
*** ActiveX Control Event ***
LPARAMETERS bytestotal
thisform.tcpClient.Object.GetData(@strData)
thisform.txtOutput1.Value = strData
■TxtSendData.InteractiveChange 事件
thisform.tcpServer.Object.SendData(this.Value)
最后更新于:2008-10-30 18:19:00
回复列表 (共15个回复)
沙发
nhcherry [专家分:30] 发布于 2008-10-31 12:38:00
这个问题还没结帖,说明问题依然存在并没有得到更好的解决方法,VFP走过十年风光的日子是否真的已经走到尽头?无论在速度还在网络应用中都已经逐渐满足不了用户的需求,VFP的未来路又会如何?VFP的程序员最好选择哪些软件编程呢?希望大家可以讨论一下.最近公司要上一套SAP的ERP软件,不知这论坛中有没有人用过呢?
用Winsock控件在VFP中进行编程,还望赐教!![em2]
板凳
foxdb [专家分:1830] 发布于 2008-10-31 15:44:00
本人十几年前从dBase 到 FoxPro 9.0 一路坎坷走过来了,感触万千!
当年"该死"收购fox公司的foxpro再推出个Access一心想枪毙foxpro,扬言foxpro6.0后不再支持发展foxpro可是用户答应吗? fxopro 7.0 8.0 9.0 不是也出来了吗?为啥"该死"痛恨foxpro?我来告诉大家:本人在十几年前就用debug全程跟通过foxpro2.0的内核,并将他改成双字节版(汉化版)后来"该死"收购fox公司推出了foxpro2.5中文版结果漏洞百出,赶紧搞了个foxpro2.6来补救,知道为啥?这是因为不是所有原fox公司的程序员都买"该死"的帐,所以把foxpro的"精神"带走了...你接手改"内核"不出错才怪!告诉大家一个小秘密"foxpro2.0的内核代码到VFP9.0都可正常用哦"只不过"该死"用可视化(面向对象)封装和向下兼容的幌子来蒙骗你们...fox的原"基因"他敢改吗?醒醒吧...当有一天MS_SQL也"黑屏"的时候你们的心会流血的!
foxpro的“自由表--DBF”是foxpro在个人数据库里的典范,虽然她风光不再,但她那“透明”“安全”“方便”与“廉价”是我对她倍感兴趣!您没用心去研究她,您是很难体会到的。。。
foxpro的速度在当今“硬件”和“宽带”突飞猛进的环境下也不是啥问题了,三层结构(B/S)的网络应用又为foxpro带来了春天。。。当有一天“该死”把MS_SQL也"黑屏"了,到那时我想个人和中小企业的数据库她又是首选。。。
关于“用Winsock控件在VFP中进行编程”问题,我给你一个我调通的“原理示范源程序”你参考体会吧。。。。
下载地址:[url=http://www.enhor.com/down_data/Winsock.rar]http://www.enhor.com/down_data/Winsock.rar[/url]
3 楼
nhcherry [专家分:30] 发布于 2008-11-01 08:48:00
我也是从Dbase到VFP9.0一路走来,真的路途坎坷,我并没有花太多时间去研究其内核,由于小女子才疏学浅,在无师无学友的情况下学起来也是相当的艰难,虽然普通应用程序也写了不少,VFP的很多方面都未有深刻去体会,但只单一种VFP不能满足工作上的需求,有时间还要多学一两种,VFP+SQL都并没有完全放弃VFP.要是真的不再支持VFP,真的是惨不忍睹了,或者搞了个没有多大意义的VFP2008出来,那是更可悲了.
有问题再找你.
4 楼
cbl518 [专家分:57140] 发布于 2008-11-01 22:38:00
foxdb 先生,不愧是高手!
不过还有更简单的办法,你可以共享程序,而不是共享数据。
设置系统,和执行程序,要用代码执行,这样比人工设置要好的多!
使用 iis 可以在广域网中,畅通无阻。
程序和数据,要按功能,分散到每个微机中,数据要备份到一起,好统一管理。
这样不但数据可靠,运行速度比本地数据差不了多少。
只要把,影射或直接使用远程文件夹的路径,设置好。
程序中用好视图、事务处理、数据缓冲处理好,数据冲突问题。那就是使用远程共享数据和本地数据没有什么区别了。
这样,由于不使用各种第三方的,数据转换型的连接,
那效果就不同一般了,
这就是 VFP 的魅力所在~!
当然,要使用共享,必须确保共享文件夹的,数据端口,用户名和密码不断随机变化。
5 楼
cbl518 [专家分:57140] 发布于 2008-11-01 22:44:00
我十多年一直是这样使用的,运行的很好。
还望能得到你意见和见解!
碰到一个同观点的朋友不容易,
多讲几句了。
有不对的地方,还望先生谅解!
6 楼
foxdb [专家分:1830] 发布于 2008-11-02 04:59:00
楼上 cb1518 您过奖了!
我只不过是发发牢骚而已!实际上好几年前我就用VFP+IIS来开发B/S三结构的商业运用系统了,总的感觉是:如果终端是图片界面用户又多的话IIS的响应速度还是跟不上!(扫描一个条码或输入一个货号要等上3、5秒不堪忍受)IIS维护也很麻烦。我有几个用户都有被“黑”的经历。不过这个问题已解决,那就是把IIS“卸掉”用NETBOX封装成 SERVER.EXE 直接运行服务端即可,比原来的IIS差不多快十倍,而且只有一个 SERVER.EXE 文件没设任何共享盘,也只是开了一个80口。建议您把 IIS 换成NETBOX封装的服务端吧。
我也很高兴与您多聊聊,毕竟我用VFP也赚了不少,已经是个专业的“自由职业者”[em8]也想帮帮那些还在为生存而艰辛打工的初学者。。。
7 楼
0901chang [专家分:10660] 发布于 2008-11-02 14:48:00
搂住,你在广西的什么地方,如果方便,希望能当面向你请教。
8 楼
foxdb [专家分:1830] 发布于 2008-11-02 16:38:00
回楼上 0901Chang
世界真小,也许我们是老乡。本人是玉林人,现在的客户都分布在云南、广西、广东、海南四省。所以一年有6个月在四省“游荡”,夏天有3个月在桂林度假,2个月回玉林老家,还有冬天一个月在三亚度假。。。因此说不定在那,如有缘分也许我们会见面。。。当然“论坛”也为我们交流提供了条件,也是学习讨论的好地方。。。如有空泡泡“坛”也会学到好多东西的。。。
9 楼
0901chang [专家分:10660] 发布于 2008-11-02 22:40:00
我在南宁市,武宣人,我有个兄弟在玉林。
我做的东东用sql数据库好像不合算,很想知道如何用vfp做B/S的东东。不过,现在已经不年轻了,计算机语言水平和英语水平太差,学新的东东比较费劲。
10 楼
moz [专家分:37620] 发布于 2008-11-03 02:57:00
楼主果然利害,
我居然没有听说过NETBOX
到了网站去看过了一下www.netbox.cn
发现已经没法下载了,
又搜索了一下,找到了一个nbsetup.exe
打开后包含有CHM文件,
估计没找错,是2.8版本,
但我有一个问题想请教一下,
如果不使用IIS,怎样在广域网中共享?
而且,怎样编译?编译ASP程序?
还是按照NETBOX语法重新写程序?
不好意思,因为失业期间参加了下岗培训,
脑袋有点混乱和疼痛,短暂的失去了思考能力,
所以假如先生得闲,还望指点一二。
又:
因为我现在对网络操作部份的认识还是比较模糊,
有点肤浅的认识,也麻烦先生指正,
NETBOX是使用服务,
把数据连接端口绑定为一项服务,
以供远程接入使用,
只要有了IP地址,
便可以成功连接操作数据库,
是这样子吗?
那安全密码验证问题怎么处理呢?
是在登录时由连接来验证?
还是在程序内部去验证呢?
我来回复