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

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

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

当然,在某些情况下,我希望REST风格的WebAPI通过SignalR集线器广播事件……相反的情况(SignalR曾经需要访问WebAPI)似乎不太可能,但我认为仍然是可能的.

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

推荐答案

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

基本上,Web API+信号器集成包括以下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相关问答推荐

如何在 MVC 中为国家和州/省创建 Select 列表

指定的 CGI 应用程序遇到错误,服务器终止了进程

威胁已经被清除了

ASP.NET 控件无法在 Visual Studio 2008 的代码隐藏中引用

如何从 web.config 中读取系统值并在 ASP.NET MVC C# 方法中使用

使用 ASP.NET WebForms 的 jQuery DataTables 服务器端处理

ASP.Net:在共享/静态函数中使用 System.Web.UI.Control.ResolveUrl()

判断邮箱地址是否对 System.Net.Mail.MailAddress 有效

与 Twitter Bootstrap Bundle 的 ASP.NET MVC4

缩小 ASP.NET 应用程序的 Html 输出

使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

如何从 ASP.Net 发布然后重定向到外部 URL?

如何使用 WebRequest 发布数据并从网页获取响应

如何在 ASP.NET MVC 中设置时区?

ASP.NET 元:资源键

如何使div按钮提交其所在的表单?

.NET 4.0 中的自定义 MembershipProvider

System.Reflection.Assembly.LoadFile 锁定文件

盒式磁带包与 MVC4 包

在控制器 asp.net-core 中获取当前区域性