1. ホーム
  2. asp.net

[解決済み] SignalRとRESTful APIの両方を組み込むことはできますか?

2022-09-14 12:50:01

質問

ASP.NETで開発したシングルページのWebアプリを持っています。 最近、多くのWebメソッドをプッシュベースに変換しました。 SignalR ライブラリを使って、多くの Web メソッドをプッシュ型に変換しました。 これにより、ページが大幅に高速化され、ページからのサーバー呼び出しの多くが削減されました。

同時に、サーバーサイドのメソッドのいくつかについて、RESTful ASP.NET WebAPIも見てきました。本当の素晴らしさは、コアアプリケーションを開発すると同時に、外部アプリケーション用のAPIを作成できることです(これは、私が行っていることに関して重要でしょう)。

しかし、いくつかの記事と これらの の質問で、プッシュとWebAPIのメソッドは、クライアントとサーバーの通信のための2つの全く異なるパラダイムのように見えるということです。 どちらのプロトコルでもアクセスできるさまざまなメソッドを作成できると確信していますが、これには落とし穴があるのか、またはこれがずさんであると見なされるのかどうか不明です -- 私が目指しているものを達成する、より優雅な方法があるかもしれません。

RESTful WebAPI が SignalR ハブ経由でイベントをブロードキャストしたい状況は確かにあります...。その逆 (SignalR が WebAPI にアクセスする必要がある) は、可能性が低いようですが、まだ可能性があると思います。

誰かこれをやったことがありますか?どのように進めるか、アドバイスやヒントをお持ちの方はいらっしゃいますか? ここで進む最もエレガントな方法は何でしょうか。

どのように解決するのですか?

次のビデオを見てください。 ブログ記事 . SignalRでWebAPIを使用する方法を具体的に説明しています。

基本的にWebAPIと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; }
    }
}

以上です :)