有A  ,B,C,D 4个店铺     数据库在总店
A为总店   B,C,为分店   4个店铺   广域网  总店为固定IP,分店全部使用普通2M网线相连,   不想使用直连的方式 来直接操作总店 因为如果有2个分店同时操作数据库那么数据肯定会乱!  现在想要实现的 效果是 ,每天早上打开软件的时候 从总店服务器 读取 库存信息 ,    读取完后就不需要联网了,每天晚上结账的时候  连接数据库 ,核对库存进行扣减.   其他时间不需要联网..   
时间比较紧, 请问各位朋友有没有什么好的例子??  怎样来解决这个问题!!    谢谢!

解决方案 »

  1.   

    你可以用异步队列做啊,不能同步的就lock啊
      

  2.   

    A为总店 B,C,为分店 4个店铺 广域网 总店为固定IP,分店全部使用普通2M网线相连, 不想使用直连的方式 来直接操作总店 因为如果有2个分店同时操作数据库那么数据肯定会乱!不会乱的,因为数据库方面做了锁定的!
      

  3.   

    楼主是用 CS 架构吗?C# 的管理系统,CS 和 BS 架构我都做过,感觉上讲,还是用BS架构比较好一点,因为程序都是在一台服务器上运行,客户端只是显示数据,并且把用户的请求提交上去,对事务上比较好控制,对于楼主说的,想把数据库和分店分离的做法也比较好实现;另外,CS架构在我看来就是做界面比较方便,IDE提供了大量可以化的控件,但是在我前曾经做过的项目中,和业务逻辑的处理比起来,这些优势并不怎么明显,CS架构处理一些稍微有点特别的界面要求时,如果控件没有提供那个功能,有时麻烦得让人不想工作。
      

  4.   

    银行有那么多终端机,POS机都没乱,说明你事务控制的有问题。
      

  5.   

    是的呀, 是CS架构   我们暂时做的项目必须用CS来实现... 唉,郁闷了
      

  6.   

    虽然是CS架构,但是还是建议楼主在服务器上搭个  web 服务器,客户端访问 web 服务器上的 web service。这样,客户端不直接连接到数据库,并且业务逻辑处理是放在一个进程中进行的,对于数据库的互斥访问比较好控制
      

  7.   

    这种需求在过去拨号上网的时代很多,现在几乎没了设计数据库很主要,千万不要相信时间或使用时间,最好用GUID做为标识去同步.你的网络带宽问题不大,可以用xml或DataSet去同步.推荐使用DataSet,把需要同步的数据用 ds.GetChanges().WriteXml(fs, XmlWriteMode.DiffGram);这种方式,传回服务器,再由服务端程序负责更新回数据库,只要处理好并发(两个不同的客户端先后更新过同一行同一个字段的内容)就可以了.千万不要用不合规范的CSV格式(这种格式的规范CSDN没几个人懂),很容易受人攻击,比如恶意在字段中写入英文双引号和分号等,过去我们的一个用PB做的和你要实现的功能基本一样的一个软件(传输数据是CSV),受到过这种攻击.
      

  8.   

    不管是BS还是CS架构,控制数据的互斥访问都不是什么难事,现在的数据库系统,oracle, sql server, db2, mysql 等等在好多年前就已经支持多用户多线程情况下的数据同步和互斥访问了。所以楼主所担心的多家分店同时访问数据会造成数据不一致的情况,可能存在,但是很容易解决。现在的网站、网上购物、银行什么的,哪一个不是多个用户同时访问一个数据库
      

  9.   

    1、使用中间件,不要直连,就是说三层或多层结构;
    2、假如总店A是总部服务器,B店放置一台服务器作为中间层,在数据库里做个计划任务oracle ,sqlserver都有,定时上传总部数据,下载总部数据;所有B店PC客户端,直接和Bl打交道,不管理总部;其它同理;
    3、程序架构要搭好,注意数据库中门店区分、组织架构区分、权限角色操作范围区分就应该可以了。