ISAPI与后台服务器进程间通讯问题!!!

Stefine 2010-08-03 10:12:06
框架大致是这样的,我有一套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,不知这样靠谱不?

大家有任何看法请不吝赐教 :(拱手
...全文
222 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Im17benteng 2010-08-31
  • 打赏
  • 举报
回复
用FileMaping吧
Stefine 2010-08-04
  • 打赏
  • 举报
回复
哈,应该是这样。

在c#里建立网站,添加web服务,在里面添加atl webservice,提供查询接口。

手机直接post请求到asmx页面

Stefine 2010-08-04
  • 打赏
  • 举报
回复
继续求助一下,我用atl webservice向导做出来的webservice,怎么直接提供HTTP直接调用呀?

像下面这样的 http://webservice.webxml.com.cn/WebServices/ChinaStockWebService.asmx?op=getStockInfoByCode

怎么生成这asmx页面?

现在向导生成的是一个dll,一个isapi的dll,一个disco,一个htm
bdzwj 2010-08-03
  • 打赏
  • 举报
回复
用命名管道最为简单
Stefine 2010-08-03
  • 打赏
  • 举报
回复
嗯,分都有的。
zkj66278006 2010-08-03
  • 打赏
  • 举报
回复
我第一个来 我还没有办法解决问题

期待高手进来描述一下

期待楼主接分不要忘了我
Stefine 2010-08-03
  • 打赏
  • 举报
回复
哈,对哦,我现在的ISAPI传回手机端已经做了base64的。

好,走下webservice
luodx1021 2010-08-03
  • 打赏
  • 举报
回复
应该都可以,不行你就把传输的内容做个BASE64编码,取数据方在获取到内容的后再做一下BASE64解码。
Stefine 2010-08-03
  • 打赏
  • 举报
回复
写了webservice,貌似只处理了字符数据。

我要处理字节流,序列化,是吧?
luodx1021 2010-08-03
  • 打赏
  • 举报
回复
既然要走http,那你在服务端写个WebService多简单啊。ISAPI调试太麻烦了,老要重新启动IIS,很费劲。

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧