轮询REST服务的替代方法?

时间:2013-04-17 07:27:33

标签: ajax wcf rest mobile

我必须实现具有不同客户端(Silverlight,WPF)的REST WebService。关键是要利用http优势。我必须推动客户的更新(我不知道,最好的选择是什么)。大多数教程都是关于使用REST和Comet进行聊天应用程序,这不适合我的情况。我无法找到我的senario的任何样品

1)投票是一种好的做法吗?我最终会遇到一些问题吗?哪一个?

2)我想很快介绍一个Web客户端(silverlight和WPF),但我不知道我们如何在AJAX中调查(从未使用过AJAX),我想知道是否可以这样做。

3)由于互操作性,我希望服务成为REST。我希望它能与WPF,Silverlight,JAVA,Javascript(AJAX)和移动设备一起使用。因此,如果我想引入推送通知(如果甚至可以使用REST),它将如何与WPF / Silverlight,AJAX一起使用。

如果您有代码示例,我们将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:1)

1)不好。但是当处理没有WebSockets的HTTP时,您无法选择轮询或长轮询。如果可以使用WebSockets和/或SingnalR,那么您就可以避免轮询并提高性能。

2)jQuery.ajax

http://api.jquery.com/jQuery.ajax/

3)查看SignalR和SingnalR样本

http://signalr.net/

https://github.com/SignalR/SignalR

http://www.asp.net/signalr

还有一个暗示。根据我的经验,几乎总是可以重新设计客户端或UI界面以避免轮询。确保除了轮询之外没有其他办法。当您不使用遗留应用程序时,使用SignalR的WebSockets就是您的方式

<强> UPD : 当谈到遗留应用程序或维护时,绝对对于Microsoft堆栈中的REST服务,答案将是带有或不带SignalR的REST服务的ASP.NET Web API。 SignalR是一个库,即使客户端不支持WebSockets,它也可以帮助您处理推送通知。它自适应地工作,如果客户端不支持WebSockets,它将尝试使用其他技术,包括轮询和长轮询。

Nuget包也包括silverlight lib

http://nuget.org/packages/Microsoft.AspNet.SignalR.Client/

看看SignalR控制台示例。从任何.NET客户端使用SignalR库都不是问题 https://github.com/SignalR/Samples/tree/master/BasicChatConsole

有关如何使用ASP.NET Web API创建REST服务的示例和教程在此处

http://www.asp.net/web-api