2つのオプションがあります。
まずオプション
あなたはsignalRバックプレーンに、あなたの「コンソールアプリケーション」を接続することができ、そしてこれらのアプリケーションは、あなたが任意のポートを使用することができます
var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hub.Clients.All.doSomething("blah-blah");
のようなもので、クライアントのメソッドを呼び出すことができますsignalR configでは同じバックプレーン構成と同じハブになります。自己ホスティングにはOwinを使用できます。誰もこれらのコンソールアプリケーションに接続しません。
短所:
1)あなたのコンソールアプリケーションSignalR.SelfHostingとあなたのハブのクラスを参照する必要があります。これはアーキテクチャの観点からは良くありません。
2)コンソールアプリケーションは、(signalRサーバーなので)いくつかのポートをリッスンします。理論的に誰かがこのハブに接続して何かをすることができます。これは、セキュリティから見たアーキテクチャの観点からもいいものでもない。
番目のオプション
あなたは「PushSomeDataToClients」のようなハブメソッドを実装し、@bartbjeコメントで述べたようにSignalR クライアントを使用して、コンソールアプリケーションから呼び出すことができます。
長所:最初のオプションの欠点はありません。
短所:システム外の誰もがこのメソッドを呼び出さないようにするには、セキュリティの要素を実装する必要があります。 SignalRはこれを行うにはたくさんのものがありますので、ちょうどGoogle。たとえば、システム間通信用に別のハブを作成することができます。
第三の選択肢
は別の方法で、その後SignalRを使用してWebサーバアプリケーションと対話します。おそらくあなたはすでにrabbitMqや任意のタイプのサービスバスのようなものを使っています。また、Webサーバーアプリケーションで別のApiControllerを使用して実装することもできます。しかし、それは第二の選択肢に近いと思われる。
私のために、アーキテクチャの観点からはきれいなので、おそらく3番目のオプションを選択します。
重複している可能性があります[SignalR Consoleのアプリ例](http://stackoverflow.com/questions/11140164/signalr-console-app-example) – bartbje
あなたがリンクした例は、クライアントがコンソールアプリケーションに直接接続していることを示し、コンソールアプリケーションはポート8088上のSignalRエンドポイントを提供しています。私の場合、クライアントはエンドポイントを管理するWebサーバーに接続し、コンソールアプリケーションは、Webサーバーがピックアップして接続されたクライアントに送信する必要があるSignalRスケールアウトバックプレーンを介してデータをプッシュします。 –