asp.net - 我可以合并 SignalR 和 RESTful API 吗?

标签 asp.net rest web-applications asp.net-web-api signalr

我有一个使用 ASP.NET 开发的单页 Web 应用程序。我最近使用SignalR将许多网络方法转换为基于推送的方法。图书馆。这确实大大加快了页面速度,并减少了页面的大量服务器调用。

同时,我也一直在研究 RESTful ASP.NET WebAPI 的一些服务器端方法,其真正的优点在于它允许在为外部应用程序创建 API 的同时我开发核心应用程序(这对我正在做的事情很重要)。

然而,在看了几篇文章和these之后two问题是,推送和 WebAPI 方法似乎是客户端-服务器通信的两种完全不同的范例。我确信我可以创建可以通过任一协议(protocol)访问的各种方法,但我不确定这是否存在陷阱或者这是否被认为是草率的——也许有一种更优雅的方法来实现我的目标为了。

在某些情况下,我确实希望 RESTful WebAPI 通过 SignalR 集线器广播事件...相反的情况(SignalR 需要访问 WebAPI)似乎不太可能,但我认为仍然有可能。

有人做过吗?有人对如何进行有任何建议或提示吗?这里最优雅的前进方式是什么?

最佳答案

看一下这个 blog post 的视频。它准确地解释了如何将 WebAPI 与 SignalR 结合使用。

本质上,Web API + SignalR 集成在于 class :

public abstract class ApiControllerWithHub<THub> : ApiController
    where THub : IHub
{
    Lazy<IHubContext> hub = new Lazy<IHubContext>(
        () => GlobalHost.ConnectionManager.GetHubContext<THub>()
    );

    protected IHubContext Hub
    {
        get { return hub.Value; }
    }
}

仅此而已。 :)

关于asp.net - 我可以合并 SignalR 和 RESTful API 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368800/

相关文章:

asp.net - jQuery UI "$("#datepicker").datepicker 不是函数"

asp.net - 如何在 Gridview 中的 RowDataBound 事件中更改 Eval() 字段的值

rest - 为 Redis 数据库构建 API REST 服务的框架?

web-applications - 出现在网站 url 中的 "#"或 "#!"的意义是什么?

web-applications - 在哪里保持img或css目录符合maven项目结构?

java - 我如何在 Maven 中结合 WAR 打包和 OSGi 包创建?

asp.net - 多边形的国家行政级别

Jquery 对话框在回发后关闭

java - Spring Data Rest 能否提供足够的灵活性以用于现实世界的应用程序?

rest - 具有预身份验证的Grails中的JWT token 生成