项目升级遇到了一个问题,如下:
  我们以前的系统是这样的:一个VC做的服务器,DELPHI做的客户端,通过SOCKET进行通信。客户端在登陆时候连接上服务器,其间与服务器保持连接,直到客户端推出,断开连接。
  现在我们的客户端需要改为浏览器,由于服务器无法修改为支持HTTP协议,所以,仍然需要通过SOCKET与服务器交互。所以,需要做个ACTIVEX,实现SOCKET与服务器交互的功能。SOCKET实现不是问题。但是,问题是这样的:怎么保持长连接?假设流程是这样的,一个页面调用ACTIVEX去连接服务器,可是,当离开这个页面进入下个页面的时候,ACTIVEX对象已经消失了。下个页面不能得到这个对象了,怎么去继续交互,也就是在整个WEB系统的访问过程中,只能与服务器连接一次,且,不能断开连接,直到退出。怎么解决,如果有不用ATL的解决方案也可以。

解决方案 »

  1.   

    你可以将你的socket后台写成service,通过activex启动和关闭服务.
      

  2.   

    如果因为客户端需要与服务器保持连接,或者传递的数据量较大,格式较复杂,那可以把客户端控件写成进程外服务器
    如果不是上面的原因,可以考虑把控件移到Web服务器进程,
      

  3.   

    SORRY,最近由于工作太忙,没有到这里。
    TO  kingzai:
      我也是这样想的,可是,我做了一个服务,但是却没有办法在服务里创建对象。我可以去启动或关闭服务,我想调用服务的组件的方法。
      

  4.   

    我认为firmbird(firmbird)的解决方法比较好,
    但有两点疑问 :
    1 如果把客户端写成进程外服务器,如果是在创建COM的时候建立连接,在退出时关闭连接,对从一个页面到另一个页面的跳转,会不会出现不断出现连接-断连的情况(觉得这样会很浪费)
    2 如果把控件转移到WEB服务器进程,对于IIS,具体怎么做?