拜求方案:一个客户有300多个分布在全国各地的零售店,还要时时上传数据,如何做方案? ( 积分: 100 )

  • 主题发起人 wobudong
  • 开始时间
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,无论什么方案都有各自的用处的,sorry.
 
B

baiduan

Unregistered / Unconfirmed
GUEST, unregistred user!
这很简单.网站+客户端.我做过这种,已经实际运行.<br><br>客户端定义<br>&nbsp;&nbsp;setDataLogUrl1='%ssetDataLog.asp';<br>&nbsp;&nbsp;sendBeginURL1='%sbeginupload.asp?fileid=%s&amp;dataid=%s';&nbsp;//初始化传输页面<br>&nbsp;&nbsp;sendURL1='%sfileupload.asp?fileto=%s';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//文件传输页面<br>&nbsp;&nbsp;sendEndMD51='%sgetmd5.asp?fileid=%s';&nbsp;//取得md5的页面<br>&nbsp;&nbsp;sendEndURL1='%sendupload.asp?fileid=%s';&nbsp;//设置传输完成标识页面<br>//这些页面可以提供或者更新服务器相应的信息.<br><br>function&nbsp;TmainFrm.GetDatefrmMsgHost(StrUrl:&nbsp;string;webBW:TWebBrowser):&nbsp;string;<br>var<br>flags:OleVariant;<br>begin<br>result:='';<br>try<br>&nbsp;&nbsp;flags:=&nbsp;navNoWriteToCache&nbsp;+&nbsp;navNoReadFromCache;<br>&nbsp;&nbsp;WebBW.Navigate(strUrl,flags);<br>&nbsp;&nbsp;while&nbsp;WebBW.ReadyState&nbsp;&lt;&nbsp;READYSTATE_COMPLETE&nbsp;&nbsp;&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Application.ProcessMessages;<br>&nbsp;&nbsp;end;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;while<br>&nbsp;&nbsp;//Memo1.Lines.Clear;<br>&nbsp;&nbsp;//&nbsp;Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.InnerHtml);<br>&nbsp;&nbsp;result:=lowerCase(IHtmlDocument2(WebBrowser1.Document).Body.InnerHtml);<br>&nbsp;&nbsp;DeleteUrlCacheEntry(PChar(strUrl));<br>except<br>&nbsp;result:='';<br>&nbsp;exit;<br>end;<br>end;<br><br>这个函数使用webBrowse访问页面,上传或者获取信息.<br><br>//================<br>和服务器交互的问题解决了,其他的就不是问题了.
 
D

danng

Unregistered / Unconfirmed
GUEST, unregistred user!
to:wobudong<br>你所说的测试我的程序出现的问题,在网络延迟时间非常长的网络环境中确实存在这个问题,问题原因客户端的超时时间设得太短所造成。<br>但在稍好点的Internet网络环境中,是不会出现这个问题的。
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
to&nbsp;baiduan:<br>你说的采用类似和b/s交互类似的方法,开发起来还是很复杂的,我已经测试了别人写好的基于http的(rempobject,dbanywhere-java),开发也很简单,但就是感觉效率比tcp的还慢,老板不满意.
 
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
“时时”比较模糊,结合实际应用,必须给个具体、明确的要求。查询库存、销售有两种情况:<br>一种是库存在总部,各分店没有库存,这种情况,所有数据就必须放在服务器,分店不能上网就只能停止营业,这样的营业模式,分店的业务量不会很大,分店端的速度问题也不是那么重要了。<br>另一种是库存在各分店,就不会象股票那样,一直盯屏幕(在家炒股票也有断线的时候),在网络连通的情况下,每5分钟或每10分钟更新一次数据,足够了。因为:总经理根据各分店的销售情况、库存来定决策,决定进货、调货,打开一个界面,看完各个品种的明细,再加上一点考虑时间,这个过程也要3-5分钟,所以,实际应用不可能是以秒计的。分店中必须考虑:若有1-2个小时不能上网,比如ADSL坏了,电信线路故障,那么这段时间无法上网,分店是不是要停止营业?
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
to&nbsp;skadon:<br>兄弟你理解错误了,终端必须要支持断线,断线不能够营业是绝对不行的.<br>我说的时时主要还是各个分公司和总部要能够时时的查询销售情况和库存,还要能够下定单等,所以才要求'只要不断线',终端就要时时(越快越好).
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
to&nbsp;&nbsp;danng:<br>是的,你说的也没错,不过我用讯雷从这个服务器上下载要达到40多K呢,按理说,速度也不慢了啊.这样的网络环境在实际应用还是有的,有的甚至可能还要更差.当然,这都是个别的,要都这样,那我们老板就疯了.
 
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
我没有理解错吧,你没有具体、精确说明要求,我只能根据我所理解的来假设两种情况。现在第一种情况排除了。<br>&nbsp;&nbsp;&nbsp;&nbsp;我再强调“需要明确、准确的要求”,“时时”是模糊的,不具体不明确,必须具体到“1秒,10秒,30秒,2分钟,10分钟,30分钟,1小时,3小时,12小时”。在这里我只是参与讨论,不需要知道你的具体要求,仅仅建议你:问老板,要他给出具体的要求,你才好根据他的需要去设计这个项目。<br><br>之所以这么说,是因为我已做过这样一个系统,对于速度有这样一个情况:分店前台,开销售单时,有1秒的延迟,老板不接受。总部端,服务器不在本地,在电信机房,老板要列出某个分店其中500个品种的最近15日,30日,90日销售量,当前库存量,花了6分钟,老板愿意等。
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
哈哈,你说的也对,感谢支持.<br>老板水平太笨了,有些东西跟他也说不明白,很头疼.
 
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
嘿嘿,老板方面好交代啊,比如这个“时时”,可以这么跟他说:达到1秒需要每个分公司拉专线,投资是&nbsp;300*每专线价格&nbsp;,达到2-3秒是总部增加专线,拉齐电信、网通、铁通的,且把总部服务器升级到16核心,32G内存,10Mbps带宽。按现有条件,不增加设备,只能做到2分钟以上。
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
哈哈,牛.老板就真疯了,我也就省心了.不用做这鬼项目了,换工作.
 
A

aerobull

Unregistered / Unconfirmed
GUEST, unregistred user!
搞条备份线路。也便宜的。化不了几个钱。
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
恩,有道理,可以更稳定点.
 
A

aerobull

Unregistered / Unconfirmed
GUEST, unregistred user!
我的建议是不要用那种离线存本地的方式,因为如果有个数据确实需要在各分公司间产生交叉,那么就有你受的了。也许你现在想不到,但是哪天碰到了,有的你受的。<br>如果是我,我就采用如下的方法,<br>稳定第一,速度第二,备份线路。采用大众化的,使用人多的,有源代码的组件,有问题解决起来也方便,网络能不能保证随时通信,不是你软件要管的事。何必给自己找罪受,增加开发成本呢?
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
老板的意思是坚决要采取断线存本地,客户也是这个意思,主要是考虑绝对不能够影响终端销售,至于是否有交叉数据,或者是交叉数据如何处理,我感觉是软件设计的问题,应该是可以解决的.
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
to&nbsp;aerobull:<br>'网络能不能保证随时通信,不是你软件要管的事。何必给自己找罪受,增加开发成本呢?'<br><br>其实我不赞同这个观点,客户需要的是解决问题,那么我的任务就是给客户在现有的条件下解决问题,那么肯定要考虑实际情况,如果是仅仅为了自己的方便而推脱责任,我感觉总不太好吧,呵呵.<br><br>我们选择的组件必须需要代码的,而且必须是需要提供商能够进行售后服务的.
 
B

baiduan

Unregistered / Unconfirmed
GUEST, unregistred user!
楼主,你仔细分析你的需求,没有分布节点<br>你的模型很简单标准的1个s&nbsp;N个c.<br><br>你现在考虑的是用什么方法提高s和<br>c的通信效率.除了硬件,那要注意只有2点:<br>1&nbsp;减少c传输到s的信息量.使每次处理不需要太多的时间.<br>2&nbsp;提高s的处理效率.<br><br>如果用网站+客户端.那么你轻易拥有了高效能的s<br>你只要解决1&nbsp;就用很小的代价获得相当大的结果.<br>(或者webService).<br><br>用RO或者dbanywhere,你能轻易解决这2点?<br>开发也不复杂,就比做MIS难了一点点.但是相比其他的<br>这个是性价比最好的方案之一.<br><br>//这是都商品化的可行方案,如果公司的<br>//技术能力和开发时间都充分的情况下<br>//希望你能认真考虑下
 
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
不是简单的C/S了吧,每个分店都可以在断线的情况下独立的、部分完整的运行。且还有一个问题一楼未提清楚,就是:一个分店,只有一个终端,还是可以有多个终端?这个问题是很重要的,做架构时必须考虑。<br>分店与总部断线时能够正常营业,断线几分钟、几小时,甚至一两天,不影响正常营业,是必须考虑的,这时分店的系统实际就是“一个完整的销售系统”。在能够连上总部时才把销售、进货等数据提交到总部,才从总部下载更新商品的价格信息等。
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
兄弟,你的是才用和网站交互,其实根本没必要吧,到不如直接和http服务器交互,而且这样的webservice也很多了,而且都还做的不错,我测试过一些,即时反映速度不怎么样,当然,非连接的肯定可以支持更多的终端.<br>用&nbsp;remobject,dbanywhere&nbsp;肯定可以解决你说的那两点,而且速度比你的解决方案还要快,兄弟可以测试一下比较看看.
 
W

wobudong

Unregistered / Unconfirmed
GUEST, unregistred user!
客户要就是一个店一台机器,那肯定就是一个终端了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部