项目升级遇到了一个问题,如下:
我们以前的系统是这样的:一个VC做的服务器,DELPHI做的客户端,通过SOCKET进行通信。客户端在登陆时候连接上服务器,其间与服务器保持连接,直到客户端推出,断开连接。
现在我们的客户端需要改为浏览器,由于服务器无法修改为支持HTTP协议,所以,仍然需要通过SOCKET与服务器交互。所以,需要做个ACTIVEX,实现SOCKET与服务器交互的功能。SOCKET实现不是问题。但是,问题是这样的:怎么保持长连接?假设流程是这样的,一个页面调用ACTIVEX去连接服务器,可是,当离开这个页面进入下个页面的时候,ACTIVEX对象已经消失了。下个页面不能得到这个对象了,怎么去继续交互,也就是在整个WEB系统的访问过程中,只能与服务器连接一次,且,不能断开连接,直到退出。怎么解决,如果有不用ATL的解决方案也可以。
我们以前的系统是这样的:一个VC做的服务器,DELPHI做的客户端,通过SOCKET进行通信。客户端在登陆时候连接上服务器,其间与服务器保持连接,直到客户端推出,断开连接。
现在我们的客户端需要改为浏览器,由于服务器无法修改为支持HTTP协议,所以,仍然需要通过SOCKET与服务器交互。所以,需要做个ACTIVEX,实现SOCKET与服务器交互的功能。SOCKET实现不是问题。但是,问题是这样的:怎么保持长连接?假设流程是这样的,一个页面调用ACTIVEX去连接服务器,可是,当离开这个页面进入下个页面的时候,ACTIVEX对象已经消失了。下个页面不能得到这个对象了,怎么去继续交互,也就是在整个WEB系统的访问过程中,只能与服务器连接一次,且,不能断开连接,直到退出。怎么解决,如果有不用ATL的解决方案也可以。
如果不是上面的原因,可以考虑把控件移到Web服务器进程,
TO kingzai:
我也是这样想的,可是,我做了一个服务,但是却没有办法在服务里创建对象。我可以去启动或关闭服务,我想调用服务的组件的方法。
但有两点疑问 :
1 如果把客户端写成进程外服务器,如果是在创建COM的时候建立连接,在退出时关闭连接,对从一个页面到另一个页面的跳转,会不会出现不断出现连接-断连的情况(觉得这样会很浪费)
2 如果把控件转移到WEB服务器进程,对于IIS,具体怎么做?