CS和BS混合架构,不同应用程序间数据传递
政府某部门管理了很多企业,每个企业都有安装“进销存管理系统”,当然,不同的企业安装的进销存系统的开发环境不一样,编程语言等等都不一样(比如dephi、VC++、VB、java、C#.net、ASP.net等等)。
现在,政府要求自己开发一套管理平台系统(BS与CS混合架构),即中心服务器上的管理平台(类似于0A)采用BS架构,政府工作人员登录管理平台即可进行统计查询,而统计查询所需要的数据来自于他们所管辖的各个企业的进销存管理系统。而各个企业的进销存管理系统是CS架构安装在本企业电脑上的。现在需要的要求是:
1、各个企业的进、销、存业务发生的同时,需要实时将相关的数据提交到政府管理平台的数据库,并要求数据传上来以后服务器端要进行数据合法性、有效性的验证,并且对数据的处理结果给予反馈。
2、政府如果有通知、新闻等消息的话,政府工作人员在管理平台上发布,各相关企业(一个、多个、一组、所有)都可以即时接收到。
3、各企业业对企业、企业对政府、政府对企业都可以实现一对一、一对多、多对多的实时聊天(类似于QQ)功能,包括传递文件。鉴于以上要求,我想需要给企业的电脑上开发一个工具软件,此工具的作用可以表述为:
1、提供一个接口,由各企业的进销存管理系统调用,即当发生进、销、存业务之后,进销存管理系统向它自己的数据库中添加相应记录,同时调用我们的工具软件提供的接口,将相关数据提交给我们的工具软件。由我们的工具软件将接收到的数据保存在工具软件的数据库中。
2、工具软件与政府服务器保持联接的情况下,数据实时提交给服务器,并由服务器将结果反馈给企业端的工具软件;当工具软件与政府服务器处于未联网状态时,工具软件一时侦测联网状态,一旦联网成功即将数据发送给服务器。
3、政府管理平台上发送通知的时候,工具软件实时接收(或在最短的时间内接收)。说明:工具软件在安装在各个企业的电脑上的,各个企业与政府服务器是通过INTERNET联接的,企业可能使用动态IP的网络(如ADSL),企业的电脑可能同时处于企业自己的内部局域网中(即没有公网IP,通过路由联接公网)。
我们的开发环境是:C#.net、ASP.net,(VB6会用,但未考虑使用)
问题是:
1、企业现有的进销存系统要将相关数据提交给企业端的工具软件,工具软件的接口该如何写?看了网上的资料说用DDE、OLE、DLL,但找不到实例,不晓得怎么做,也不晓得在哪里查什么资料。
2、工具软件要将数据提交给服务器,使用WEBSERVICE好还是用Socket好?如何实现交互?(比如客户端软件有一个进度提示,显示正在联接、正在验证权限、正在发送第1条数据、正在发送第2条数据、正在发送第N条数据、数据发送完毕正在等待服务器验证数据、数据验证通过正在断开联接、已断开与服务器的联接)
3、当政府在管理平台上发布通知以后,企业端工具软件如何实时接收?(考虑过使用Timer定时查询服务器,但如果有很多客户端向服务器查询的话,服务器岂不是要崩溃?)
4、一对一、一对多、多对多的聊天功能网上有一些实例,但如果基于IP的话,当客户端处于局域网通过路由器联接公网的时候,客户端就没有公网IP,那基于IP的消息发送与接收不知道如何实现?使用SOCKET来做可以吗?如何写?我本人不是合格的程序员,也没有多少积分给大家,不过,大家帮我们解决了问题之后,我会考虑使用RMB感谢的!
当然,如果有朋友能做这个事情的话,也可以外包去做,具体可以通过邮箱联系。
邮箱:[email protected]

解决方案 »

  1.   

    数据传递方面     2.0的框架用ws   3.5的用wcf~~~   
      

  2.   

    数据传递方面     2.0的框架用ws   3.5的用wcf~~~   
      

  3.   

    1、企业数据上传,建议采用WEBSERVICE,理由是操作简便,直接走HTTP,因为企业是内网,要不然还要做NAT转换
    2、对于即时通讯,建议参考腾讯的WEBQQ方式因为你这个是要由企业的内网经过公网再转到政府的内网,所以,如果使用SOCKET,会非常费劲,而且不利于调试;
      

  4.   

    没看到你的网络环境,有点头大,内网向公网走还行,公网进内网就没办法了。还是在网络连接上想办法吧。考虑下VPN什么的。
      

  5.   

    企业数据上传时,服务器端使用WEBSERVice,能不能实现实时交互,
    工具软件要将数据提交给服务器,使用WEBSERVICE好还是用Socket好?如何实现交互?(比如客户端软件有一个进度提示,显示正在联接、正在验证权限、正在发送第1条数据、正在发送第2条数据、正在发送第N条数据、数据发送完毕正在等待服务器验证数据、数据验证通过正在断开联接、已断开与服务器的联接)
      

  6.   

    根据我了解到的,简单的为你量身定做了如下设计:
    如我们理解不一,意见不一的,请联系我.
    1.工具软件的设计:
    企业的软件是属于企业开发的,但他们有各自的语言开发;
    而我们提供给企业的工具软件,目的是为了监视记录企业进销存的业务数据。
    如果断网的情况下,我们政府提供给企业的工具软件还可以记录企业的业务操作。
    而如果一旦联网,马上由工具软件发送到政府服务端数据库。
    这时政府可以从自己的数据库中查询到企业的业务信息。解决方案:因为工具软件负责输入企业业务数据到工具软件数据库,
    和把工具软件数据输出到政府服务器端。
    因而,可以开启两一个服务,两类接口,一类接口面向输入,一类接口面向输出。
    使用WebSerivce实现,也可以使用WCF实现。2.发布通知的设计
    解决方案:当政府服务端发布通知时,首先保存到自己的数据中。
    然后写一个WebService服务,而企业客户端每到一个固定时间调用接口,获得通知信息。3.聊天工具的设计:
    解决方案:使用Client--Server--Client方式设计聊天
      

  7.   

    随时关注,这个问题,我也想知道。发送数据的话,考虑用多线程。
    接收的时候用webservice,入库后,达到同步。如果访问数据库方便的话,同步的时候查找数据库,不同服务器上的数据库操作。
      

  8.   


    政府可以要求企业修改自己的程序,考虑到不同开发商的开发环境不同,所以我们希望做一个接口让企业的程序开发商调用。企业端的工具软件是必须要做的,因为涉及到:
    企业进销存   单向  企业端工具传递数据
    企业端工具  双向 政府服务器端程序  数据的发送和接收
    所以,数据库上加作业或者触发器这一条并不是好办法其实这就是不同的应用程序之间的数据交互,即程序A发生业务的时候,调用程序B的接口并将数据传递给程序B,程序B保存数据或者将数据上传到服务器均由程序B来实现。
    我想这些对于程序工程师而言并不是什么难事吧?
    各位高手不用考虑企业进销存系统开发商的问题,只需要考虑如何写一个接口即可,谢谢各位的帮助
      

  9.   

    SmartClient,WebService,Asp.Net基本就可以解决了
      

  10.   

    WEBservice是需要布署WEB服务器才可以的吧?如果企业端工具使用webservice的话,会很麻烦,不是我们想要的,也应该会有更好的解决办法。谢谢你!
      

  11.   

    用WebService或Socket可以解决这个问题
      

  12.   

    是的,服务器端的管理平台使用BS,提供WEBservice
    企业端工具软件为CS,需要与服务器交互的时候调用服务器的WEBSERVICE
    但企业端工具软件本身是不提供WEBSERVICE,需要使用其它技术提供接口,供企业的进销存系统调用,比如DDE  OLE  DLL等等
      

  13.   

    那你就那样吧,对于企业数据上传,你们直接操作企业的数据库上传到服务器,这样就可以绕过企业的客户端应用程序(但估计这样工作量比较大,也可以要求企业将其数据转换为一个统一的结构,然后你们只用一个程序上传统一数据结构的数据),至于如何上传数据到服务器,建议还是用WEBSERVICE对于即时通讯,不建议使用SOCKET,使用SOCKET很困难,还是参考WEBQQ吧
    采用AJAX,把数据提交到服务器,然后浏览器刷新读取数据
    即时通讯这块,怎么做都挺费劲
      

  14.   

    1:
    因为在业务级别,政府端只管接收数据,不会往企业端写东西
    根本不用关心各企业各自是什么数据结构,只要定义好一个数据接口。比如一定格式的XML等,政府端只要接收接口数据解析就完事。至于企业怎么送上来,是他们自己的事情。
    这个验证基本也是基础验证,貌似也做不到实时的业务级验证。
    2:
    2和3,不说技术问题,单说个解决方案。
    客观的说,用企业QQ类的软件之类的现成软件把。企业必须有一台机器连接到外网,有专人值班。
    如果企业内其他电脑不能连接到外网的,就由这个专人进行传达。
    一般的企业内部也有交流软件,比如用个腾讯通或者是UCStar等。软件购买成本,不会比开发成本高的。
    这样自己开发结合成熟产品购买,无论是技术难度还是项目风险都会降低。
      

  15.   

    用WebService可以解决大部分问题
      

  16.   

    呵呵,
    1.定义好数据接口接收数据并暂存(你说“至于企业怎么送上来,是他们自己的事情”。这意味着人家要改进销存系统,或者如果能操作数据库,做上传资料的外挂程序)2.数据上传用WEBSERVICE,定时扫描数据并上传,但只能至外网,再做两个服务,通过网闸进政府内网。3.政府的通知、新闻等消息,更新在一数据表里,第二条里的服务定时扫描发至外网,然后发送至企业(这个发送可以用SOCKET)4.各企业业对企业、企业对政府、政府对企业都可以实现一对一、一对多、多对多的实时聊天
       这条的话,都不在一个网络,政府是在内网,而企业是在外网,是不能实时聊天的。
       但可以用第三条的方式,也可以解决互相沟通的需要,只是不是真正意义上的实时。
       
      

  17.   

    这几天有点忙,没上来CSDN转!
    非常感谢各位的支持!因为我本人并非专业编程人员,所以只能通过各位的建议理一下思路!在参考各位朋友的建议之后,结合我们自身的情况,采用了:
    1、设置一个中转数据库,企业将数据存入中转数据库,我们的客户端软件去中转数据库拿数据,并上传至政府WEBSERVICE
    2、双向通讯采用MYQQ,并将数据接口功能集成进去
    3、政府到企业的通知,由客户端通过timer定时查询数据库(采用了非实时方法,简单,目前也能满足需求;下一步升级的时候可能要采用socket)再次谢谢各位!我想这个贴子可以暂时结束了!我不晓得该怎么结贴,记得发贴的时候我还悬了唯一的40分,不晓得怎么处理!各位可以告诉我一下!
      

  18.   

    才看到帖子,我们最近也在做一个类似的
    关于通知、新闻消息的下发,我们采用的WS接口,政府先把那些企业添加到数据库里然后发布消息的时候就调用ws通知下级企业,企业再回调 而“king520520”所述的企业定时扫描政府的数据 那样政府的数据库资源消耗太大