Eu tenho um aplicativo da web de página única desenvolvido usando ASP.NET. Recentemente, converti muitos dos métodos da web para serem baseados em push, usando a biblioteca SignalR . Isso realmente acelerou a página consideravelmente e reduziu muitas das chamadas do servidor da página.
Ao mesmo tempo, também estive olhando para RESTful ASP.NET WebAPI para alguns dos métodos do lado do servidor, com a beleza real de que permite criar uma API para aplicativos externos ao mesmo tempo que desenvolvo o aplicativo principal (que será importante para o que estou fazendo).
Parece, entretanto, depois de ler vários artigos e essas duas perguntas, que os métodos push e WebAPI parecem dois paradigmas totalmente diferentes para a comunicação cliente-servidor. Tenho certeza de que posso criar vários métodos que podem ser acessados por meio de qualquer um dos protocolos, mas não tenho certeza se há armadilhas para isso ou se isso é considerado negligente - talvez haja uma maneira mais elegante de alcançar o que pretendo para.
Certamente há situações em que desejo que o RESTful WebAPI transmita eventos por meio de um hub SignalR ... O oposto (SignalR sempre precisando acessar o WebAPI) parece menos provável, mas suponho que ainda seja possível.
Alguém já fez isso? Alguém tem algum conselho ou dica de como proceder? Qual seria a forma mais elegante de avançar aqui?
fonte
Respostas:
Dê uma olhada no vídeo desta postagem do blog . Ele explica exatamente como você pode usar WebAPI com SignalR.
Essencialmente, a integração Web API + SignalR consiste nesta classe :
Isso é tudo. :)
fonte
SignalR, na verdade, já está incorporado na fonte WebAPI vNext (4.1).
Se você não usar a compilação RTM, mas em vez disso pegar uma compilação do Codeplex, verá que há um novo projeto chamado
System.Web.Http.SignalR
que pode ser utilizado. Ele foi adicionado há alguns dias com este commit - http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159Uso de amostra (conforme mencionado no commit):
Se você não quiser mudar para o vNext por enquanto, pode apenas usar esse código como referência.
Esta implementação é muito semelhante (um pouco mais polida, inclui testes etc.) ao que Brad Wilson mostrou no NDC Oslo - http://vimeo.com/43603472
fonte
Aqui está um vídeo mostrando uma integração das duas tecnologias http://channel9.msdn.com/Events/TechDays/Belgium-2013/25 e aqui há um pacote NuGet para a integração https://www.nuget.org/ packages / Microsoft.AspNet.WebApi.SignalR /
fonte
IHubConnectionContext
, que foi substituído porIHubConnectionContext<T>
. A resposta aceita é um caminho a percorrer.