C/S系统能否脱离服务器运行?(100分)

  • 主题发起人 主题发起人 lxdufo
  • 开始时间 开始时间
L

lxdufo

Unregistered / Unconfirmed
GUEST, unregistred user!
最近开发一套程序,BDE+MS SQL Server 7,客户机分布在三层楼各办公室,
最远距服务器150米,现场环境不好,网络常断。
客户提出要求:当网络断开时能继续使用,恢复后自动将数据写入服务器,
如何实现?
 
用公文包吧
 
请问什么是公文包?
 
clientDataset的方法:
SaveToFile将数据集保存到磁盘,LoadFromFile取出编辑,
与服务器联接后,ApplyUpDate提交数据
 
问题是不知道什么时候服务器断开,什么时候又能连上,不停地ping会造成
死机(客户机24小时运行不关机)
若正好在断开时提交就会等很时间,然后产生一个异常
 
利用mssql7的复制技术,当网络连通时,运用同步复制把客户端的数据复制到服务器上。
 
fstao的方法可行

MS SQL7里面允许多台服务器的协调工作,这样就可以了,不过成本高了点:(

如果本地用数据库也可以,定期自动更新数据库和服务器上的数据吧:)我想用定时器和错误触发
就可以搞定
 
如果用MIDAS,本身就已经支持公文包技术了,MIDAS是能够离线工作的。
 
为什么说公文包不行?
用了公文包离线编辑数据,网络流量是不是会小一些
 
这种应用使用MIDAS正合适.
 
客户机安个桌面版保存数据,ping通了再复制.

----- 嘿嘿! 说起来容易.....
 
wlq的答案是最灵活的方法。
 
midas似乎不能离线运行,今天做了个实验,故意将服务断开,客户机一运行就报错:
什么RPC出错?
另外用的是瘦客户机,客户机上没有也不能安装数据库.
我现在采用的办法是: 服务器定时读客户机存储的二进制文件,再用TAdoQuery
写入服务器,是不是很笨?
 
给点时间,让我试试TDateSet的CacheUpdate属性。
 
各位实验的想的还有提问题的主解决了没有怎么解决的。。别让我发分了
 
1.ClientDataSet1.SavetoFile('Sample.dat');
2.ClientDataSet1.LoadFromFile('Sample.dat');
3.ClientDataSet1.ApplyUpdates(0);
try
ClientDataSet1.Close;
DcomConnection1.Connected := false;
finally
DcomConnection1.Connected := true;
ClientDataSet1.open
end;
 
三层+公文包是最佳的解决方案,若对三层陌生请来信或参考下面的C/S方案。
1在客户机上建备用数据库。
2程序中增加下载、上载模块。
3网络连通时,下载必要的数据到客户机上,或把处理完的数据上载。
这样不需要始终连接服务器。
 
我们有个系统有点类似,先在本地创建一个临时表,把数据放在本地。到一个时候,让
client以server连接,如果连接成功就发送数据。再到下一个沉余,再发送。如此循环。
基本解决问题。
 
多人接受答案了。
 
后退
顶部