![](/img/trans.png)
[英]What is the best coding pattern in asp.net for calling a web service which requires polling?
[英]What is best? Polling on a socket or waiting for a web service timeout?
我有一个[网络方法]。 它的作用是在目录中查找* .dat文件,其中目录路径由客户端调用[web方法]提供。
此刻,客户端调用[web方法],代码进入循环检查所有文件。 如果找到任何内容,它将返回列表。 它显然也可能超时,并且这样做时我的客户端代码会捕获错误并重新调用[web方法]。
另一种处理方法是在客户端上打开TCP套接字,它将向服务器上的接收套接字服务发送“我在这里”。 服务器将根据客户端提供的条件查找* .dats的存在。 如果找到1个以上的文件,它将发回“ 1”。 如果没有文件,它将返回“ 0”。 如果客户端从服务器接收到“ 1”,则我的客户端应用程序将调用[web方法]以检索可用列表。
我知道我可以使用WCF进行回调,但是我想明确地看一下这两个选项1st。
我也知道SignalR,但是我发现如果我使用的是Windows 8之前的操作系统,则SignalR将恢复为长轮询,而不是Web套接字。
我可以理解,采用第一种方法会将“重点”放在服务器上,而采用第二种方法将平均地分配“压力”,但将涉及重复的TCP调用。
我已经进行了测试,而且似乎都拥有自己的功能。
任何人的任何意见都将受到感激。
我的目标是速度,低内存消耗,易于代码管理,服务器与客户端之间的松耦合-基本上是显而易见的...
谢谢...
如果您正在寻找松散耦合,则某些实现可能会使用Message Queue。 尽管这意味着您将需要更改架构的某些部分。
我建议将其更改为“推送”方法,而不是轮询。
我的方法是这样的:
(可选)您可以实现一个消息调度程序服务,该服务负责客户端的消息订阅。 这会将订阅管理与您的文件服务分开,这对我来说更干净。
实施细节可能因您选择的技术而异。
在工作中,我们有与您类似的场景,为此我们正在使用WCF服务,这些服务开箱即用地支持Microsoft消息队列(MSMQ),并且为了易于使用而支持NServiceBus框架。 NServiceBus使建立这些发布者/接收者方案变得容易设置。
当然,还有许多其他的Message Queue框架可以使用,这就是我个人的良好经验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.