J'ai une application Web d'une seule page développée à l'aide d'ASP.NET. J'ai récemment converti de nombreuses méthodes Web pour qu'elles soient basées sur le push, en utilisant la bibliothèque SignalR . Cela a vraiment accéléré considérablement la page et réduit beaucoup d'appels au serveur depuis la page.
Dans le même temps, j'ai également examiné le RESTful ASP.NET WebAPI pour certaines des méthodes côté serveur, la vraie beauté étant qu'il permet de créer une API pour des applications externes en même temps que je développe le application principale (qui sera importante pour ce que je fais).
Il semble cependant, après avoir examiné plusieurs articles et ces deux questions, que les méthodes push et WebAPI semblent être deux paradigmes totalement différents pour la communication client-serveur. Je suis sûr que je peux créer diverses méthodes accessibles via l'un ou l'autre protocole, mais je ne sais pas s'il y a des écueils à cela ou si cela est considéré comme bâclé - peut-être qu'il existe un moyen plus élégant d'atteindre ce que je vise pour.
Il y a certainement des situations dans lesquelles je veux que le WebAPI RESTful diffuse des événements via un hub SignalR ... Le contraire (SignalR ayant jamais besoin d'accéder au WebAPI) semble moins probable, mais je suppose toujours possible.
Quelqu'un at-il fait ça? Quelqu'un a-t-il des conseils ou des astuces sur la façon de procéder? Quelle serait la manière la plus élégante d'avancer ici?
Réponses:
Jetez un œil à la vidéo de cet article de blog . Il explique exactement comment vous pouvez utiliser WebAPI avec SignalR.
Essentiellement, l'intégration API Web + SignalR consiste en cette classe :
C'est tout. :)
la source
SignalR est en fait déjà intégré dans la source WebAPI vNext (4.1).
Si vous n'utilisez pas la version RTM, mais que vous récupérez une version de Codeplex, vous verrez qu'il y a un nouveau projet appelé
System.Web.Http.SignalR
que vous pouvez utiliser. Il a été ajouté il y a quelques jours avec ce commit - http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159Exemple d'utilisation (comme mentionné dans le commit):
Si vous ne souhaitez pas passer à vNext pour le moment, vous pouvez toujours simplement utiliser ce code pour référence.
Cette implémentation est très similaire (un peu plus raffinée, comprend des tests, etc.) à ce que Brad Wilson a montré au NDC Oslo - http://vimeo.com/43603472
la source
Voici une vidéo montrant une intégration des deux technologies http://channel9.msdn.com/Events/TechDays/Belgium-2013/25 et ici il y a un package NuGet pour l'intégration https://www.nuget.org/ packages / Microsoft.AspNet.WebApi.SignalR /
la source
IHubConnectionContext
, qui a été remplacé parIHubConnectionContext<T>
. La réponse acceptée est une voie à suivre.