Ich habe eine einseitige Web-App, die mit ASP.NET entwickelt wurde. Ich habe kürzlich viele der Webmethoden mithilfe der SignalR- Bibliothek auf Push-basiert konvertiert . Dies hat die Seite erheblich beschleunigt und viele Serveraufrufe von der Seite reduziert.
Gleichzeitig habe ich mir die RESTful ASP.NET-WebAPI für einige der serverseitigen Methoden angesehen. Das Schöne daran ist, dass sie gleichzeitig mit der Entwicklung der API eine API für externe Anwendungen erstellen kann Kernanwendung (die für das, was ich tue, wichtig sein wird).
Nach dem Betrachten mehrerer Artikel und dieser beiden Fragen scheinen Push- und WebAPI-Methoden jedoch zwei völlig unterschiedliche Paradigmen für die Client-Server-Kommunikation zu sein. Ich bin sicher, dass ich verschiedene Methoden erstellen kann, auf die über beide Protokolle zugegriffen werden kann, aber ich bin mir nicht sicher, ob dies Fallstricke aufweist oder ob dies als schlampig angesehen wird - vielleicht gibt es einen eleganteren Weg, um das zu erreichen, was ich anstrebe zum.
Es gibt sicherlich Situationen, in denen ich möchte, dass die RESTful-WebAPI Ereignisse über einen SignalR-Hub sendet ... Das Gegenteil (SignalR muss jemals auf die WebAPI zugreifen) scheint weniger wahrscheinlich, aber ich nehme an, dass dies immer noch möglich ist.
Hat jemand das getan? Hat jemand Ratschläge oder Tipps zum weiteren Vorgehen? Was wäre hier der eleganteste Weg nach vorne?
quelle
Antworten:
Schauen Sie sich das Video aus diesem Blog-Beitrag an . Es wird genau erklärt, wie Sie WebAPI mit SignalR verwenden können.
Die Integration von Web API + SignalR besteht im Wesentlichen aus dieser Klasse :
Das ist alles. :) :)
quelle
SignalR ist tatsächlich bereits in der WebAPI-Quelle vNext (4.1) enthalten.
Wenn Sie nicht den RTM-Build verwenden, sondern stattdessen einen Build aus Codeplex verwenden, sehen Sie, dass dort ein neues Projekt namens heißt,
System.Web.Http.SignalR
das Sie verwenden können. Es wurde vor ein paar Tagen mit diesem Commit hinzugefügt - http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159Beispielnutzung (wie im Commit erwähnt):
Wenn Sie vorerst nicht zu vNext wechseln möchten, können Sie diesen Code immer nur als Referenz verwenden.
Diese Implementierung ist sehr ähnlich (etwas ausgefeilter, enthält Tests usw.) dem, was Brad Wilson auf der NDC Oslo gezeigt hat - http://vimeo.com/43603472
quelle
Hier ist ein Video, das eine Integration der beiden Technologien zeigt http://channel9.msdn.com/Events/TechDays/Belgium-2013/25 und hier gibt es ein NuGet-Paket für die Integration https://www.nuget.org/ packages / Microsoft.AspNet.WebApi.SignalR /
quelle
IHubConnectionContext
, die durch ersetzt wurdenIHubConnectionContext<T>
. Akzeptierte Antwort ist ein langer Weg.