Programming

SignalR과 RESTful API를 모두 통합 할 수 있습니까?

procodes 2020. 8. 4. 19:47
반응형

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

반응형