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,不知这样靠谱不?
大家有任何看法请不吝赐教 :(拱手