두 가지 옵션이 있습니다.
첫 번째 옵션
당신은 signalR 백플레인에 "콘솔 응용 프로그램"을 연결할 수 있으며, 이러한 애플리케이션은
var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hub.Clients.All.doSomething("blah-blah");
당신은 어떤 포트를 사용할 수 있습니다처럼 뭔가 클라이언트의 메소드를 호출 할 수 있습니다 signalR config의 경우 동일한 백플레인 구성 및 동일한 허브의 경우. 자기 호스팅을 위해 Owin을 사용할 수 있습니다. 아무도이 콘솔 앱에 연결할 수 없습니다.
단점 :
1) 콘솔 응용 프로그램은 SignalR.SelfHosting과 허브 클래스를 참조 할 필요가있다. 이것은 건축 적 관점에서 좋지 않습니다.
2) 콘솔 앱이 일부 포트를 수신합니다 (신호가 서버이기 때문에). 이론적으로 누군가가이 허브에 연결하여 뭔가를 할 수 있습니다. 이것은 보안 관점에서 볼 때 아키텍처의 관점에서 좋지 않습니다.
두 번째 옵션
당신은 "PushSomeDataToClients"와 같은 허브 메소드를 구현하고 @bartbje 코멘트에서 언급 한 바와 같이 SignalR 클라이언트를 사용하여 콘솔 응용 프로그램에서 호출 할 수 있습니다.
장점 : 첫 번째 옵션의 단점이 없습니다.
단점 : 시스템 외부의 누군가가이 메소드를 호출하지 못하게하려면 보안 관련 항목을 구현해야합니다. SignalR은 이것을하기위한 많은 것들을 가지고 있습니다, 그래서 그냥 구글. 예를 들어, 시스템 간 통신을 위해 별도의 허브를 만들 수 있습니다.
세 번째 옵션 다음 또 다른 방법 SignalR와 웹 서버 애플 리케이션
상호 작용. 아마 당신은 이미 rabbitMq 나 어떤 종류의 서비스 버스 같은 것을 사용하고있을 것입니다. 또한 웹 서버 앱에서 별도의 ApiController를 사용하여 구현할 수도 있습니다. 그러나 그것은 두 번째 옵션에 더 가깝게 보인다.
나는 건축상의 관점에서 볼 때 제 3의 옵션을 선택했을 것입니다.
중복 될 수 있음 [SignalR 콘솔 앱 예] (http://stackoverflow.com/questions/11140164/signalr-console-app-example) – bartbje
맞는지 확실하지 않습니다.링크 된 예제는 클라이언트가 콘솔 앱에 직접 연결하고 콘솔 앱이 포트 8088에서 SignalR 엔드 포인트를 제공하고 있음을 보여줍니다. 제 경우에는 클라이언트가 엔드 포인트를 관리하는 웹 서버에 연결되고 클라이언트와 콘솔 앱은 웹 서버가 픽업하여 연결된 클라이언트에게 보낼 필요가있는 SignalR 스케일 아웃 백플레인을 통해 데이터를 전송합니다. –