我的WebService想尽量多地响应用户并发请求,但是由于后面所要查询的东西的并发量有限制,而且可能很慢,所以WebService接下的用户请求我想存入MSMQ队列里面缓存起来,慢慢处理。
这样的话,就需要WebService自己来做异步机制,就是查询成功后,还要返回给调用者数据。这个如何做到呢?
是否可以WebService将请求发送到MSMQ之后,就订阅一个事件。然后后面的主服务查询出来之后,发布这个事件,这样WebService就收到了。是否可以这样呢?有哪位高手这么做过?
这样的话,就需要WebService自己来做异步机制,就是查询成功后,还要返回给调用者数据。这个如何做到呢?
是否可以WebService将请求发送到MSMQ之后,就订阅一个事件。然后后面的主服务查询出来之后,发布这个事件,这样WebService就收到了。是否可以这样呢?有哪位高手这么做过?
解决方案 »
- 菜单功能如何实现 c/s
- ref 引用调用问题
- 很多博客上的代码跟IDE里一样可以折叠,都怎么做的?
- 关于SQL的问题,请各位帮帮忙。在线等。
- 请问能不能再C#下调用DOS下的命令?
- 取不到默认打印机,真怪
- 请问:我载visio中的选择宋体时,将其复制到WORD中,文字怎么变成了?;请指点 谢谢
- 在datagridview里输入一条及多条,然后插入到数据库中,
- C#怎样访问i/o地址
- 在win10下MoveWindow和setwindowpos均无法正常工作
- 求救,如何从大量TXT文件中读取数据指定数据并存入数据库啊?
- 请教.net remoting中SoapClientFormatterSinkProvider 不识别“typeFilterLevel”配置属性的问题
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcreatingasynchronousxmlwebservicemethod.asp
例如
transid=Service.StartMyWork(args);客户端需要不断查询服务的状态.
例如
DoOtherWork();
bool waitfinish=true;
bool finished=Service.FinishMyWork(transid,waitfinish,out retval);Regards .
http://www.codeproject.com/cs/webservices/async_xmlws.asp
XML Web Services原先的一个问题是不能实现真正的Callback。比如用ASP.NET实现的时候,每一个[WebMethod]都是一个远程方法调用,但只支持方法效用而不支持事件(Event),不能像本地调用可以传一个Delegate来实现Callback(Callback、函数指针、Listener模式、中断等其实都是一回事,都是一种事件响应)。Web Services里面不能支持事件是很不方便的,很多应用就受限制,或者因此就放弃了Web Services技术。当然,也有一些Workaround,比如可以轮询——Outlook Web Access就是轮询的,所以能做到有email来就在屏幕右下角出一个小窗口,效果和MSN Messenger一样,这很酷;或者也可以在客户端起一个Remoting的服务器,把Remote Object的URI传给Web Services,等事件来了以后服务器再去Call客户端,这当然也是也可以。不过这些Workaround要么有些缺点(性能问题),要么不够直接(Remoting太“重”了)。这就好像你可以在JavaScript里面实现全部的OO,但这会非常非常繁琐。这又好像通过Attribute可以在.NET里面实现AOP,但总感觉不直接。WSE 2.0 (Web Services Enhancements 2.0)提供了一些TCP Messaging的功能,很好地解决了这个问题(在Web Services架构里面实现原生的Callback)。我写了一个简单的例子来演示Web Services如何支持事件回调: