Mam aplikację internetową z pojedynczą stroną opracowaną przy użyciu programu ASP.NET. Niedawno przekonwertowałem wiele metod internetowych na oparte na wypychaniu przy użyciu biblioteki sygnalizującej . To naprawdę znacznie przyspieszyło działanie strony i zredukowało wiele wywołań serwera ze strony.
W tym samym czasie przyglądałem się również RESTful ASP.NET WebAPI pod kątem niektórych metod po stronie serwera, a prawdziwe piękno polega na tym, że pozwala on tworzyć API dla aplikacji zewnętrznych w tym samym czasie, gdy tworzę podstawowa aplikacja (która będzie ważna dla tego, co robię).
Jednak po zapoznaniu się z kilkoma artykułami i tymi dwoma pytaniami wydaje się, że metody push i WebAPI wydają się być dwoma całkowicie różnymi paradygmatami komunikacji klient-serwer. Jestem pewien, że mogę stworzyć różne metody, do których można uzyskać dostęp za pośrednictwem obu protokołów, ale nie jestem pewien, czy są w tym pułapki lub czy jest to uważane za niedbałe - może istnieje bardziej elegancki sposób na osiągnięcie tego, do czego zmierzam dla.
Z pewnością istnieją sytuacje, w których chcę, aby interfejs RESTful WebAPI emitował zdarzenia za pośrednictwem centrum SignalR ... Wręcz przeciwnie (sygnalizujący kiedykolwiek musi uzyskać dostęp do interfejsu WebAPI) wydaje się mniej prawdopodobne, ale przypuszczam, że nadal jest możliwe.
Czy ktoś to zrobił? Czy ktoś ma jakieś rady lub wskazówki, jak postępować? Jaka byłaby tutaj najbardziej elegancka droga naprzód?
źródło
Odpowiedzi:
Obejrzyj wideo z tego wpisu na blogu . Wyjaśnia dokładnie, jak można używać interfejsu WebAPI z sygnalizującym.
Zasadniczo integracja Web API + SignalR składa się z tej klasy :
To wszystko. :)
źródło
SignalR jest już włączony do źródła WebAPI vNext (4,1).
Jeśli nie używasz kompilacji RTM, ale zamiast tego pobierzesz kompilację z Codeplex, zobaczysz, że jest tam nowy projekt o nazwie,
System.Web.Http.SignalR
który możesz wykorzystać. Został dodany kilka dni temu z tym zatwierdzeniem - http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159Przykładowe użycie (jak wspomniano w zatwierdzeniu):
Jeśli nie chcesz na razie przełączać się na vNext, zawsze możesz użyć tego kodu w celach informacyjnych.
Ta implementacja jest bardzo podobna (nieco bardziej dopracowana, zawiera testy itp.) Do tego, co Brad Wilson pokazał na NDC Oslo - http://vimeo.com/43603472
źródło
Tutaj jest film pokazujący integrację dwóch technologii http://channel9.msdn.com/Events/TechDays/Belgium-2013/25, a tutaj jest pakiet NuGet do integracji https://www.nuget.org/ pakiety / Microsoft.AspNet.WebApi.SignalR /
źródło
IHubConnectionContext
, który został zastąpiony przezIHubConnectionContext<T>
. Zaakceptowana odpowiedź jest drogą do zrobienia.