Przesyłanie danych z SQL Server do aplikacji internetowej za pomocą SignalR
Moja aplikacja internetowa ASP.NET MVC 4 wyświetla często aktualizowane dane klientowi. Dane pochodzą z zewnętrznego źródła (aplikacji zainstalowanej na serwerze) i przetwarzane przez SQL Server 2008 R2.
Obecnie przepływ danych jest dość tradycyjny: klienci odpytują z ASP.NET, a ASP.NET odpytuje z kolei z SQL Server.
Aby uniknąć odpytywania (a teraz, gdy potrzebuję interakcji między użytkownikami aplikacji internetowej w czasie rzeczywistym), zmieniam podejście do pushowania, używającsignalR
do transmisji danych do klientów. Zwiększa to płynność działania użytkownika, a także zmniejsza obciążenie związane z odpytywaniem między klientami a serwerem ASP.NET.
Problem polega na odwróceniu przepływu między SSRV i ASP.NET: chciałbymprzesuń dane z SSRV do ASP.NET w najbardziej efektywny sposób.
SSRV prowadzi drogie zapytania, aby zaimportować niektóre dane zewnętrzne - a po przetworzeniu danych są one również gotowe do udostępniania przez Internet za pośrednictwem transmisji.
Moje obecne podejście poor-man: wydanie żądania POST Http do aplikacji internetowej (na localhost) w celu wysłania danych (do tego używam funkcji CLR).
Po przetworzeniu danych pakuję je gotowe doHttpWebRequest
, ustaw je w Service Broker, aby uniknąć wpływu na inne działania, a ja skończyłem.
OdpisałemSqlDependency
zmusiłoby mnie to do zapytania o dane - nie jest to duża zaleta (zamieniłbym żądanie HTTP lokalnego hosta na zapytanie uruchomione na SQL Server)
Jednocześnie czuję, że powinien to być lepszy sposób.
Jakieś sugestie?