本来是想用图表示出来的,但图片弄不进来,没办法,只好在下面说了。
结构:
WEB服务器(S端)(有IP)
IE客户端(A端)(没有固定IP)
IE客户端(B端)(没有固定IP)流程:
1、A端发起申请,首先将数据同步到S服务器上,同时将数据也要告诉B端
2、B端收到A端发起的申请后,管理员做处理,此时将数据同步到S服务端,再自动将处理结果发馈到A端已用方案:
1、A端发起申请,首先将数据同步到S服务器上
2、B端通过AJAX不断的连接S服务端的数据库,判断是否有更新,然后再提示在B端
3、B端提示后,管理员做处理,此时将数据同步到S服务端
4、A端通过AJAX不断的连接S服务端的数据库,得到相应的反馈,再提示在A端
结论:
对服务器的负载太重了,严重的减低了服务器的工作效率与降低了AB端的页面处理效率本来是打算用remoting的,但是用remoting很麻烦,好像一定要确定的IP,由于AB端是没有确定的IP的,所以通信起来很麻烦。还请哪位高手指点一下,给个好的方案,先谢了。

解决方案 »

  1.   

    没有更好的方案了,BS架构里,B对B的通信本来就是不可能直接实现的,只能通过S中转。不过,可以对这种方式进行优化,比如说在S端做一点缓冲机制,A发出申请时写数据库,但同时更新缓冲池内的信息,B不直接读库,而是先判断一下缓冲池中是否有信息,这样系统的开销会小很多。
      

  2.   

    "通过AJAX不断的连接S服务端的数据库"
    把不断连接的时间间隔加大,
    同时服务在处理“不断连接”时,如果有数据立即返回,没有数据,则一直拖到接近浏览器超时值(通常可以30-60S),IE的超时通常在60s内是可行的
    这样服务器的负载基本在1分钟1次请求,局域网环境还算可以
      

  3.   

    lonehare(无名) 兄说的缓冲机制,兄弟我没有用过,不知是否能够指导一下,或者给个实例行不?
      

  4.   

    littlegang(Gang) 兄,你们的方法对我们这不适合,因为我们这个有要求,必须在10S以内,没得办法。
      

  5.   

    想到一个办法
    如果说数据不是太复杂,也不是太数据量大
    可以考虑把数据做成dataset甚至于ajax可用的xml放在cache中
    这个10S一次的请求,对于服务器来说,压力也还算可以
      

  6.   

    忘了,这个方法就是lonehare(无名)的缓冲机制的一种实现方法
      

  7.   

    不知道你的数据结构,写点流程描述吧。A端发出申请至服务器->更新数据库->服务器接收后先检查缓冲机制(可用Application或Cache或静态类实现)中是否有相应的标识,若没有则新建,若存在则改变相应的状态标志B端定时发出申请至服务器->服务器接收后先检查缓冲机制->若没有则根据数据库中信息重建标识->判断缓冲机制中的状态标志并进行下一步操作(若需更新数据库则更新完毕后更新缓冲中的状态标志)->返回结果A端定时发出申请至服务器->(同B的操作过程,但逻辑不同)->若操作周期完毕则清除缓冲中相应信息->返回结果这其实是一种非常简陋的缓冲机制,具体方法可根据实际项目的要求进行算法的优化。注:定时刷新千万别强制每秒刷啊,而是客户端在读取完上一次刷新结果后隔1秒再刷,不然再强的服务器也顶不住。
      

  8.   

    不好意思哈,这两天没有上。我这边的数据结构是不复杂的,存几个ID,但是每个IE端都取的是不一样的数据。我现在也是用XML实现的,不过没有注意在读取完上一次刷新结果后隔1秒再刷,这个倒要注意一下。我现在又在用新的方法去弄,直接用内存文件来试试,这样看会不会快些。