Stefine 广州航海家科技发展有限公司 CTO  2010年08月03日
ISAPI与后台服务器进程间通讯问题!!!
框架大致是这样的,我有一套C/S的程序,PC版本已经在运行并发布了,现开发手机版本,经过考虑,通讯最终选择走HTTP,而非直接socket(主要原因也是HTTP实现简便),而后台我想兼容现已开发完成的server程序,由于server程序是在windows下,所以想出了走isapi这路线,我的思路是这样:isapi在加载到iis时就建立socket与server连接,手机post一个http请求过来,isapi就帮忙中转(send给后台server,然后recv server处理后的数据,再返回http响应数据给手机端)。

现在基于这个流程已经把整套协议都实现了,数据也完整到手机端了,但发现一个问题,我的isapi实现很简单,就直接以非阻塞的socket在send和recv,然后发现请求一段时间后,isapi始终会缓存上一个数据包返回给我,也就是说,就是从IIS重启后,正常请求一段时间,然后发现收到的数据包就开始变成上一个请求的回应包了,我调试了,每个请求都及时到了后台server的处理流程的,都正常返回了,先怀疑IIS启用ISAPI缓存,禁用了,也不行。

怀疑ISAPI DLL被加载到IIS后只有一个socket在处理请求造成的?然后我就这样改了下,每来一个请求,每次都建立与后台server的socket连接,好,正常了,这样这个问题被我避免了,但这性能,肯定是不能忍受的。

于是我又开始想各种方案实现isapi与后台server进程的通讯,wm_copydata肯定不行,后来搜了下,貌似可以提搞w3wp.exe的运行权限让他可以CreateFileMapping,不知这样靠谱不?

大家有任何看法请不吝赐教 :(拱手
...全文
131 点赞 收藏 10
写回复
10 条回复

还没有回复,快来抢沙发~

发动态
发帖子
网络编程
创建于2007-09-28

7878

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告