我正在通过互联网从windows应用程序向asp.net web服务发送由xml组成的小消息(每个消息大约1-2KB)。
99%的时间都能正常工作,但有时一条消息会花费过多的时间,25 - 30秒,而不是通常的4-5秒。此延迟还会导致消息无序到达。
有没有什么办法可以解决这个问题,让所有的消息都能快速地按顺序到达,或者在以这种方式使用web服务时,这是不可能的?
如果不可能解决,我可以请得到一个低延迟的消息传递框架的建议,可以在互联网上按顺序传递消息。
谢谢。
发布于 2011-04-18 21:29:24
存在吗?我可以解决这个问题,这样所有的消息都会按顺序快速到达,或者当以这种方式使用web服务时,这是不可能的吗?
仅仅使用webservices是不可能的。你总是会遇到一些情况,有时候事情会比“应该”花更长的时间。这是网络编程的本质,您必须绕过它。
我也推荐使用XMPP来处理这样的事情。有关该标准的信息,请访问xmpp.org,有关.Net的一组客户端库,请访问jabber-net。
发布于 2011-04-18 21:26:12
好吧,这有点偏离目标,但是您是否了解了XMPP (Jabber)协议。它是GTalk使用的消息传递系统。使用起来相当简单。唯一的缺点是,您将需要一个有状态服务来接收和处理消息。
我也同意@Mat的评论。这是我想到的第一个解决方案,然后我记起我在pas中使用XMPP在服务器之间完成快速/小型和可靠的消息。
http://xmpp.org/about-xmpp/
如果你搜索谷歌,你会很容易找到支持这个协议的.net库。而且有很多免费的jabber服务器。
发布于 2011-04-18 21:27:05
确保消息按顺序发送并作为批处理一起解析的一种方法是,对way服务进行一次调用,并将所有相互依赖的消息作为单个批处理进行处理。
传统上,当您调用web服务时,您不会期望对web服务的其他调用会以特定的顺序发生。听起来你有一个隐含的序列,数据需要到达目标应用程序,这让我认为你需要将你的消息分组在一起,并一起发送它们,以确保该顺序。
无论消息传递框架的速度有多快,您都不能保证防止可能乱序发送消息的竞争条件,除非您发送的一条消息的数据顺序正确。
https://stackoverflow.com/questions/5703526
复制相似问题