У меня есть одностраничное веб-приложение, разработанное с использованием ASP.NET. Недавно я преобразовал многие веб-методы в push- режим , используя библиотеку SignalR . Это действительно значительно ускорило страницу и уменьшило количество обращений к серверу со страницы.
В то же время я также изучал RESTful ASP.NET WebAPI для некоторых методов на стороне сервера, причем настоящая красота заключалась в том, что он позволяет создавать API для внешних приложений одновременно с разработкой основное приложение (что будет важно для того, что я делаю).
Однако после просмотра нескольких статей и этих двух вопросов кажется, что методы push и WebAPI кажутся двумя совершенно разными парадигмами для взаимодействия клиент-сервер. Я уверен, что могу создать различные методы, к которым можно получить доступ через любой из протоколов, но я не уверен, есть ли здесь подводные камни или это считается небрежным - может быть, есть более элегантный способ достичь того, к чему я стремлюсь. для.
Конечно, бывают ситуации, в которых я хочу, чтобы RESTful WebAPI транслировал события через концентратор SignalR ... Противоположное (SignalR когда-либо нуждалось в доступе к WebAPI) кажется менее вероятным, но я полагаю, что все же возможно.
Кто-нибудь это делал? Есть ли у кого-нибудь советы или подсказки о том, как действовать? Что было бы здесь наиболее элегантным?
Ответы:
Взгляните на видео из этого сообщения в блоге . Он объясняет, как именно вы можете использовать WebAPI с SignalR.
По сути, интеграция Web API + SignalR состоит из этого класса :
Вот и все. :)
источник
SignalR фактически уже включен в исходный код WebAPI vNext (4.1).
Если вы используете не сборку RTM, а взяли сборку из Codeplex, вы увидите, что там есть новый проект,
System.Web.Http.SignalR
который вы можете использовать. Он был добавлен пару дней назад вместе с этим коммитом - http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159Пример использования (как указано в коммите):
Если вы пока не хотите переключаться на vNext, вы всегда можете просто использовать этот код для справки.
Эта реализация очень похожа (немного более доработана, включает тесты и т. Д.) На то, что Брэд Уилсон показал в NDC Oslo - http://vimeo.com/43603472
источник
Вот видео, демонстрирующее интеграцию двух технологий http://channel9.msdn.com/Events/TechDays/Belgium-2013/25, а здесь есть пакет NuGet для интеграции https://www.nuget.org/ пакеты / Microsoft.AspNet.WebApi.SignalR /
источник
IHubConnectionContext
, который был заменен наIHubConnectionContext<T>
. Принятый ответ - лучший вариант.