SignalR과 RESTful API를 모두 통합 할 수 있습니까?
ASP.NET을 사용하여 개발 된 단일 페이지 웹 앱이 있습니다. 최근에 SignalR 라이브러리를 사용하여 많은 웹 메소드를 푸시 기반으로 변환했습니다 . 이로 인해 실제로 페이지가 크게 빨라지고 페이지에서 많은 서버 호출이 줄었습니다.
동시에 일부 서버 측 메소드에 대한 RESTful ASP.NET WebAPI도 살펴 보았습니다. 실제 아름다움은 내가 개발하는 동시에 외부 응용 프로그램 용 API를 만들 수 있다는 것입니다. 핵심 응용 프로그램 (내가하는 일에 중요 할 것입니다).
여러 기사와보고 후, 그러나 보인다 이러한 두 개의 푸시 및 WebAPI 방법은 클라이언트 - 서버 통신을위한 두 개의 완전히 다른 패러다임처럼 보일 것을 질문입니다. 프로토콜 중 하나를 통해 액세스 할 수있는 다양한 방법을 만들 수 있다고 확신하지만 함정이 있는지 또는 이것이 조잡하다고 생각되는지 확실하지 않습니다. 아마도 내가 목표로하는 것을 달성하는보다 우아한 방법이 있습니다 에 대한.
RESTful WebAPI가 SignalR 허브를 통해 이벤트를 브로드 캐스트하기를 원하는 상황이 확실히 있습니다 ... 반대편 (WebAPI에 액세스해야하는 SignalR)은 가능성이 적지 만 여전히 가능하다고 생각합니다.
누구든지 이것을 했습니까? 진행 방법에 대한 조언이나 팁이 있습니까? 여기서 가장 우아한 방법은 무엇입니까?
이 블로그 게시물 의 비디오를 살펴보십시오 . SignalR에서 WebAPI를 사용하는 방법을 정확하게 설명합니다.
기본적으로 Web API + SignalR 통합은 다음 클래스 로 구성됩니다 .
public abstract class ApiControllerWithHub<THub> : ApiController
where THub : IHub
{
Lazy<IHubContext> hub = new Lazy<IHubContext>(
() => GlobalHost.ConnectionManager.GetHubContext<THub>()
);
protected IHubContext Hub
{
get { return hub.Value; }
}
}
그게 다야. :)
SignalR은 실제로 WebAPI 소스 vNext (4.1)에 이미 통합되어 있습니다.
RTM 빌드를 사용하지 않고 Codeplex에서 빌드를 가져 오는 경우 System.Web.Http.SignalR
활용할 수 있는 새로운 프로젝트가 있습니다. 이 커밋으로 며칠 전에 추가되었습니다-http: //aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159
커밋에 언급 된 샘플 사용법 :
public class ToDoListController : HubController<ToDoListHub>
{
private static List<string> _items = new List<string>();
public IEnumerable<string> Get()
{
return _items;
}
public void Post([FromBody]string item)
{
_items.Add(item);
// Call add on SignalR clients listening to the ToDoListHub
Clients.add(item);
}
}
지금 vNext로 전환하지 않으려는 경우 언제든지 해당 코드를 참조 용으로 사용할 수 있습니다.
이 구현은 Brad Wilson이 NDC Oslo- http ://vimeo.com/43603472에서 보여준 것과 매우 유사합니다 (조금 더 세련되고 테스트 등 포함).
다음은 두 기술 http://channel9.msdn.com/Events/TechDays/Belgium-2013/25 의 통합을 보여주는 비디오이며 통합을 위한 NuGet 패키지 https://www.nuget.org/가 있습니다. 패키지 /Microsoft.AspNet.WebApi.SignalR/
참고 URL : https://stackoverflow.com/questions/12368800/can-i-incorporate-both-signalr-and-a-restful-api
'Programming' 카테고리의 다른 글
프로젝트에서 * plugins *에 대한 Maven 종속성 트리를 어떻게 표시 할 수 있습니까? (0) | 2020.08.04 |
---|---|
빌린 콘텐츠 밖으로 이동할 수 없음 / 공유 참조 뒤로 이동할 수 없음 (0) | 2020.08.04 |
히스토리를 유지하면서 git 저장소에서 새 저장소로 단일 디렉토리를 이동하려면 어떻게해야합니까? (0) | 2020.08.04 |
종료 / 중지 될 때 중요한 변경 위치 API에 대한 동작? (0) | 2020.08.04 |
nodejs에 적합한 메시지 큐 옵션은 무엇입니까? (0) | 2020.08.04 |