通过互联网在.net应用程序之间发送数据

通过互联网在.net应用程序之间发送数据

问题描述:

我正在通过互联网从windows应用程序向asp.net web服务发送由xml(每个大约1-2 KB)组成的小消息。通过互联网在.net应用程序之间发送数据

99%的时间这个工作正常,但有时一个消息将需要非常多的时间来驱动,25 - 30秒,而不是通常的4 - 5秒。此延迟也会导致消息按顺序到达。

无论如何,我可以解决这个问题,以便所有的消息快速到达或顺序或以这种方式使用Web服务时不可能保证?

如果无法解决,我可以请一个低延迟消息框架的推荐,它可以通过互联网传递消息。

谢谢。

+4

互联网是不可靠的。一般情况下你无能为力(无需投入大量资金)。将序列号放入消息中,以便在目的地重新排序。 – Mat 2011-04-18 13:24:41

是否有无论如何我可以解决这个问题,以便所有的消息到达迅速,顺序或不可能保证以这种方式使用Web服务时保证?

只使用web服务,这是不可能的。你总是会遇到偶尔会发生“应该”需要更长时间的情况。这是网络编程的本质,你必须解决它。

我也建议使用XMPP来做这样的事情。有关标准的信息请参阅xmpp.org,关于.Net的一组客户端库请参阅jabber-net

好吧,这是有点偏离目标,但你有没有在寻找XMPP(Jabber)协议。这是GTalk使用的消息传递系统。非常简单的使用。唯一的缺点是,你需要一个有状态的服务来接收和处理消息。

我也同意@Mat的评论。这是第一个想到的解决方案,然后我想起我在pas中使用XMPP来实现服务器之间的快速/小型和可靠消息。

http://xmpp.org/about-xmpp/

如果你在Google上搜索,你会很容易找到支持此协议的.NET库

。 有很多免费的jabber服务器。

的一种方式,以确保您的消息被按顺序发送,并解析为一个批次一起做一个调用web服务与依赖于对方为一个批次的所有消息。

传统上,当您打电话给Web服务时,您不希望其他Web服务调用将按特定顺序发生。这听起来像你有一个隐含的序列数据需要在目标应用程序,这让我觉得你需要组邮件一起发送在一起,以确保顺序到达。

不管消息框架的速度,你不能保证防止可能将邮件发送的命令,除非您发送了正确的顺序您的数据的一个消息中的竞争条件。

如果您在整个互联网的顺序发送消息,你永远不会知道多久将采取信息从一个点到另一个。一种可能的解决方案是在每个消息中包含它在序列中的位置,并且在每个端点中实现逻辑,以在处理它们之前对消息进行排序。如果您不按顺序收到消息,则可以等待丢失的消息,或请求另一端点重新发送消息。