COM调用改TCP/IP问题,请高手赐教
1.COM改TCP/IP原因:由于涉及到多个客户端调用com接口,并需要接受服务端的事件返回,系统运行中出现了程序无反应现象,虽然不频繁,但很致命,找不到解决的方法,所以通过改造COM接口为TCP/IP消息方式解决该问题.
2.修改目标,客户端程序改动尽量少,希望能按com调用方式(阻塞式)进行访问.
3.考虑的方案1:客户端中的每个对象均创建为线程,由于调用com接口的对象很多,最大需要支持4000个,也就是说要创建4000个线程,在windows 2000 中大概只能创建成功2000个左右.
4.考虑的方案2:客户端对象的函数中调用com接口时,修改为发送tcp/ip消息后,记录当前栈地址,收到返回结果取出堆栈地址,进行执行跳转,目前还没有做过这方面的试验,不知道是否可行,难度是否大.
5.考虑的方案3:每个COM修改为TCP/IP方式,发送前传入回调函数地址,收到返回消息时回调该函数,该非法肯定可行,但改动会很大.
附:简单的客户端对象
TMyObject =class
procedrue AAA;
..........
end;
TMyObject.AAA(c:Integer);
begin
XXXXXX.add(1,2);
XXXXXX.sub(2,3);
end;
在TMyObject中,类似AAA的函数很多,而且函数内可能包含10几个COM调用,现在需要把每个COM调用都改为TCP/IP,并需要判断每个的结果.