【问题标题】:Alternative to polling on REST service?替代对 REST 服务进行轮询?
【发布时间】:2013-04-17 20:07:49
【问题描述】:

我必须实现具有不同客户端(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 一起使用。

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

提前致谢!

【问题讨论】:

    标签: ajax wcf rest mobile


    【解决方案1】:

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

    2) jQuery.ajax

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

    3) 查看 SignalR 和 SinnalR 样本

    http://signalr.net/

    https://github.com/SignalR/SignalR

    http://www.asp.net/signalr

    还有一个提示。根据我的经验,几乎总是可以重新设计客户端或 UI 界面以避免轮询。确保除了轮询之外别无他法。如果您不使用旧版应用程序,那么使用 SignalR 的 WebSockets 就是您的选择

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

    Nuget 包还包括 silverlight 库

    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

    【讨论】:

    • 感谢您的回复,我已编辑我的问题。也许你能帮助我。
    • 再次感谢您的回复。我将阅读有关 signalR 的更多信息,但我不确定它是否支持像 WPF-Application 这样的客户端。您能否发布一个示例,其中包含不支持 WebSockets 的客户端?
    • 它支持 Silverlight 和 WPF 等客户端。我已经写过了。并且有样品。 SignalR 是 Microsoft 支持的技术。如果没有它,您总是可以手动实施轮询,为什么要浪费时间 - 取决于您。
    • 我发现这篇文章我认为它会起作用 :) stackoverflow.com/questions/14836065/… 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2011-08-08
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多