回 帖 发 新 帖 刷新版面

主题:[回答]单机程序如何升级到客户/服务器程序?和VFP程序如何运行于服务器?的老问题!

这个问题在本论坛讨论了尽两年还没结帖,还有人问,真是不可理解!所以发一新帖回答大家!

答: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)

回复列表 (共15个回复)

沙发

这个问题还没结帖,说明问题依然存在并没有得到更好的解决方法,VFP走过十年风光的日子是否真的已经走到尽头?无论在速度还在网络应用中都已经逐渐满足不了用户的需求,VFP的未来路又会如何?VFP的程序员最好选择哪些软件编程呢?希望大家可以讨论一下.最近公司要上一套SAP的ERP软件,不知这论坛中有没有人用过呢?

用Winsock控件在VFP中进行编程,还望赐教!![em2]

板凳

本人十几年前从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 楼

我也是从Dbase到VFP9.0一路走来,真的路途坎坷,我并没有花太多时间去研究其内核,由于小女子才疏学浅,在无师无学友的情况下学起来也是相当的艰难,虽然普通应用程序也写了不少,VFP的很多方面都未有深刻去体会,但只单一种VFP不能满足工作上的需求,有时间还要多学一两种,VFP+SQL都并没有完全放弃VFP.要是真的不再支持VFP,真的是惨不忍睹了,或者搞了个没有多大意义的VFP2008出来,那是更可悲了.
有问题再找你.

4 楼

foxdb 先生,不愧是高手!

不过还有更简单的办法,你可以共享程序,而不是共享数据。

设置系统,和执行程序,要用代码执行,这样比人工设置要好的多!

使用 iis 可以在广域网中,畅通无阻。

程序和数据,要按功能,分散到每个微机中,数据要备份到一起,好统一管理。

这样不但数据可靠,运行速度比本地数据差不了多少。

只要把,影射或直接使用远程文件夹的路径,设置好。
程序中用好视图、事务处理、数据缓冲处理好,数据冲突问题。那就是使用远程共享数据和本地数据没有什么区别了。

这样,由于不使用各种第三方的,数据转换型的连接,
那效果就不同一般了,
这就是 VFP 的魅力所在~!

当然,要使用共享,必须确保共享文件夹的,数据端口,用户名和密码不断随机变化。

5 楼

我十多年一直是这样使用的,运行的很好。

还望能得到你意见和见解!

碰到一个同观点的朋友不容易,
多讲几句了。
有不对的地方,还望先生谅解!

6 楼


楼上 cb1518 您过奖了!
  
  我只不过是发发牢骚而已!实际上好几年前我就用VFP+IIS来开发B/S三结构的商业运用系统了,总的感觉是:如果终端是图片界面用户又多的话IIS的响应速度还是跟不上!(扫描一个条码或输入一个货号要等上3、5秒不堪忍受)IIS维护也很麻烦。我有几个用户都有被“黑”的经历。不过这个问题已解决,那就是把IIS“卸掉”用NETBOX封装成 SERVER.EXE 直接运行服务端即可,比原来的IIS差不多快十倍,而且只有一个 SERVER.EXE 文件没设任何共享盘,也只是开了一个80口。建议您把 IIS 换成NETBOX封装的服务端吧。
  我也很高兴与您多聊聊,毕竟我用VFP也赚了不少,已经是个专业的“自由职业者”[em8]也想帮帮那些还在为生存而艰辛打工的初学者。。。

7 楼

搂住,你在广西的什么地方,如果方便,希望能当面向你请教。

8 楼

回楼上 0901Chang 

    世界真小,也许我们是老乡。本人是玉林人,现在的客户都分布在云南、广西、广东、海南四省。所以一年有6个月在四省“游荡”,夏天有3个月在桂林度假,2个月回玉林老家,还有冬天一个月在三亚度假。。。因此说不定在那,如有缘分也许我们会见面。。。当然“论坛”也为我们交流提供了条件,也是学习讨论的好地方。。。如有空泡泡“坛”也会学到好多东西的。。。

9 楼

我在南宁市,武宣人,我有个兄弟在玉林。
我做的东东用sql数据库好像不合算,很想知道如何用vfp做B/S的东东。不过,现在已经不年轻了,计算机语言水平和英语水平太差,学新的东东比较费劲。

10 楼

楼主果然利害,
我居然没有听说过NETBOX
到了网站去看过了一下www.netbox.cn
发现已经没法下载了,
又搜索了一下,找到了一个nbsetup.exe
打开后包含有CHM文件,
估计没找错,是2.8版本,
但我有一个问题想请教一下,
如果不使用IIS,怎样在广域网中共享?
而且,怎样编译?编译ASP程序?
还是按照NETBOX语法重新写程序?

不好意思,因为失业期间参加了下岗培训,
脑袋有点混乱和疼痛,短暂的失去了思考能力,
所以假如先生得闲,还望指点一二。

又:
因为我现在对网络操作部份的认识还是比较模糊,
有点肤浅的认识,也麻烦先生指正,
NETBOX是使用服务,
把数据连接端口绑定为一项服务,
以供远程接入使用,
只要有了IP地址,
便可以成功连接操作数据库,
是这样子吗?
那安全密码验证问题怎么处理呢?
是在登录时由连接来验证?
还是在程序内部去验证呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册