Tengo una aplicación web de una sola página desarrollada con ASP.NET. Recientemente, convertí muchos de los métodos web para que se basaran en push, utilizando la biblioteca SignalR . Esto realmente aceleró considerablemente la página y redujo muchas de las llamadas al servidor desde la página.
Al mismo tiempo, también he estado buscando en RESTful ASP.NET WebAPI para algunos de los métodos del lado del servidor, con la verdadera belleza de que permite crear una API para aplicaciones externas al mismo tiempo que desarrollo el aplicación principal (que será importante para lo que estoy haciendo).
Sin embargo, parece, después de mirar varios artículos y estas dos preguntas, que los métodos push y WebAPI parecen dos paradigmas completamente diferentes para la comunicación cliente-servidor. Estoy seguro de que puedo crear varios métodos a los que se puede acceder a través de cualquiera de los protocolos, pero no estoy seguro de si esto tiene dificultades o si se considera descuidado; tal vez haya una forma más elegante de lograr lo que pretendo. para.
Ciertamente, hay situaciones en las que quiero que RESTful WebAPI transmita eventos a través de un concentrador de SignalR ... Lo contrario (SignalR necesita acceder a WebAPI) parece menos probable, pero supongo que aún es posible.
¿Alguien ha hecho esto? ¿Alguien tiene algún consejo o sugerencia sobre cómo proceder? ¿Cuál sería la forma más elegante de avanzar aquí?
fuente
Respuestas:
Eche un vistazo al video de esta publicación de blog . Explica exactamente cómo puede usar WebAPI con SignalR.
Básicamente, la integración Web API + SignalR consiste en esta clase :
Eso es todo. :)
fuente
SignalR ya está incorporado en la fuente WebAPI vNext (4.1).
Si no usa la compilación RTM, sino que toma una compilación de Codeplex, verá que hay un nuevo proyecto llamado
System.Web.Http.SignalR
que puede utilizar. Se agregó hace un par de días con este compromiso: http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159Uso de muestra (como se menciona en el compromiso):
Si no desea cambiar a vNext por ahora, siempre puede usar ese código como referencia.
Esta implementación es muy similar (un poco más pulida, incluye pruebas, etc.) a lo que Brad Wilson mostró en NDC Oslo - http://vimeo.com/43603472
fuente
Aquí hay un video que muestra una integración de las dos tecnologías http://channel9.msdn.com/Events/TechDays/Belgium-2013/25 y aquí hay un paquete NuGet para la integración https://www.nuget.org/ paquetes / Microsoft.AspNet.WebApi.SignalR /
fuente
IHubConnectionContext
, que fue reemplazado porIHubConnectionContext<T>
. La respuesta aceptada es un camino a seguir.