【发布时间】:2010-10-06 16:22:22
【问题描述】:
我正在创建一个将接受许多连续请求的 wcf Web 服务,该 Web 服务将需要保留这些请求,直到内部应用程序(它将每隔几秒钟轮询一次 Web 服务)将发出请求Web 服务确定是否存在任何请求,如果存在则检索它们。然后,内部应用程序会将响应发送回 Web 服务,Web 服务会将响应传递回初始调用者。
IE:
客户端---1)请求---> Web服务
客户端
我正在尝试设计 Web 服务的实现,并试图思考如何实现将接受请求的机制,一直保持到内部应用程序发出数据请求并且 Web 服务等待来自内部应用程序的响应。
我主要担心的是:
1) 如果在内部应用程序发出请求之前有数千个请求进来了怎么办?
2) 如果内部应用程序死掉并且大量请求建立怎么办? (我需要让这些请求超时)
3) 如何将初始请求与客户端和内部应用程序的响应连接起来?
4) 客户端将等待响应。
WCF 消息队列在这种情况下会有所帮助吗? Web 服务是否能够在内部管理消息队列,例如,当消息进入时,Web 服务会将消息添加到队列中,类似地,当内部应用程序发出请求时,Web 服务会从顶部抓取消息队列并将其传递给内部应用程序并等待内部应用程序的响应并将其传递回客户端?
这可能吗?
如果同时有2000个客户端请求进来,因为客户端会同步等待响应,上面的场景可以吗?我能否将原始请求与从内部应用程序线程返回的响应进行匹配,以将响应提供回客户端?
消息队列方法看起来是不是有点矫枉过正?我可以将请求保存在一些静态字典中吗?
您还有其他建议吗?
【问题讨论】: