ASP.NET SignalR、ASP.NET Core SignalR の相違点Differences between ASP.NET SignalR and ASP.NET Core SignalR

ASP.NET Core SignalR は、クライアントまたは ASP.NET SignalR のサーバーとの互換性はありません。ASP.NET Core SignalR isn't compatible with clients or servers for ASP.NET SignalR. この記事では、削除または ASP.NET Core SignalR で変更された機能について説明します。This article details features which have been removed or changed in ASP.NET Core SignalR.

SignalR のバージョンを識別する方法How to identify the SignalR version

ASP.NET SignalRASP.NET SignalR ASP.NET Core SignalRASP.NET Core SignalR
サーバーの NuGet パッケージServer NuGet Package Microsoft.AspNet.SignalRMicrosoft.AspNet.SignalR Microsoft.AspNetCore.App (.NET Core)Microsoft.AspNetCore.App (.NET Core)
Microsoft.AspNetCore.SignalR (.NET Framework)Microsoft.AspNetCore.SignalR (.NET Framework)
クライアントの NuGet パッケージClient NuGet Packages Microsoft.AspNet.SignalR.ClientMicrosoft.AspNet.SignalR.Client
Microsoft.AspNet.SignalR.JSMicrosoft.AspNet.SignalR.JS
Microsoft.AspNetCore.SignalR.ClientMicrosoft.AspNetCore.SignalR.Client
クライアントの npm パッケージClient npm Package signalrsignalr @aspnet/signalr
Java クライアントJava Client GitHub リポジトリ(非推奨)GitHub Repository (deprecated) Maven パッケージcom.microsoft.signalrMaven package com.microsoft.signalr
サーバー アプリの種類Server App Type ASP.NET (System.Web) または OWIN 自己ホストASP.NET (System.Web) or OWIN Self-Host ASP.NET CoreASP.NET Core
サーバーがサポートされているプラットフォームSupported Server Platforms .NET framework 4.5 またはそれ以降.NET Framework 4.5 or later .NET Framework 4.6.1 以降.NET Framework 4.6.1 or later
.NET core 2.1 以降.NET Core 2.1 or later

機能の相違点Feature differences

自動再接続Automatic reconnects

自動再接続は、ASP.NET Core SignalR でサポートされていません。Automatic reconnects aren't supported in ASP.NET Core SignalR. クライアントが切断された場合は、再接続する場合は、ユーザーは明示的に新しい接続を開始する必要があります。If the client is disconnected, the user must explicitly start a new connection if they want to reconnect. ASP.NET SignalR、SignalR は、接続が削除された場合、サーバーに再接続しようとします。In ASP.NET SignalR, SignalR attempts to reconnect to the server if the connection is dropped.

プロトコルのサポートProtocol support

ASP.NET Core SignalR は、JSON、ほかに基づく新しいバイナリ プロトコルをサポートMessagePackします。ASP.NET Core SignalR supports JSON, as well as a new binary protocol based on MessagePack. さらに、カスタム プロトコルを作成できます。Additionally, custom protocols can be created.

トランスポートTransports

ASP.NET Core SignalR では、永久にフレーム トランスポートはサポートされていません。The Forever Frame transport is not supported in ASP.NET Core SignalR.

サーバー上の相違点Differences on the server

ASP.NET Core SignalR のサーバー側のライブラリに含まれる、 Microsoft.AspNetCore.App メタパッケージパッケージの一部である、 ASP.NET Core Web アプリケーションRazor と MVC の両方のテンプレートプロジェクト。The ASP.NET Core SignalR server-side libraries are included in the Microsoft.AspNetCore.App metapackage package that's part of the ASP.NET Core Web Application template for both Razor and MVC projects.

呼び出すことによって構成する必要がありますので、ASP.NET Core SignalR は ASP.NET Core のミドルウェア、 AddSignalRStartup.ConfigureServicesします。ASP.NET Core SignalR is an ASP.NET Core middleware, so it must be configured by calling AddSignalR in Startup.ConfigureServices.

services.AddSignalR()

ルーティングを構成するには、ハブ内にルートをマップ、 UseSignalRでメソッドを呼び出す、Startup.Configureメソッド。To configure routing, map routes to hubs inside the UseSignalR method call in the Startup.Configure method.

app.UseSignalR(routes =>
{
    routes.MapHub<ChatHub>("/hub");
});

スティッキー セッションSticky sessions

ASP.NET SignalR のスケール アウト モデルは、クライアントは再接続し、ファーム内の任意のサーバーにメッセージを送信できます。The scaleout model for ASP.NET SignalR allows clients to reconnect and send messages to any server in the farm. ASP.NET Core SignalR では、クライアントは、接続の間の同じサーバーと対話する必要があります。In ASP.NET Core SignalR, the client must interact with the same server for the duration of the connection. つまり Redis を使用したスケール アウトの場合、スティッキー セッションが必要です。For scaleout using Redis, that means sticky sessions are required. スケール アウトを使用するためAzure SignalR サービスサービスがクライアントへの接続を処理するため、スティッキー セッションは必要ありません。For scaleout using Azure SignalR Service, sticky sessions are not required because the service handles connections to clients.

接続ごとに 1 つのハブSingle hub per connection

ASP.NET Core signalr では、接続モデルを簡略化されました。In ASP.NET Core SignalR, the connection model has been simplified. 複数のハブへのアクセスを共有するために使用されている 1 つの接続ではなく、1 つのハブに直接接続が行われます。Connections are made directly to a single hub, rather than a single connection being used to share access to multiple hubs.

ストリームStreaming

ASP.NET Core SignalR なりましたストリーミング データクライアント ハブから。ASP.NET Core SignalR now supports streaming data from the hub to the client.

状態State

進行状況メッセージのサポートと、クライアントと (HubState と呼ばれる多くの場合)、ハブ間で任意の状態を渡す機能が削除されました。The ability to pass arbitrary state between clients and the hub (often called HubState) has been removed, as well as support for progress messages. 現時点では、ハブ プロキシの対応はありません。There is no counterpart of hub proxies at the moment.

PersistentConnection の削除PersistentConnection removal

ASP.NET Core signalr で、 PersistentConnectionクラスは削除されました。In ASP.NET Core SignalR, the PersistentConnection class has been removed.

GlobalHostGlobalHost

ASP.NET Core は、依存性の注入 (DI) フレームワークに組み込まれています。ASP.NET Core has dependency injection (DI) built into the framework. サービスは、DI を使用して、アクセス、 HubContextします。Services can use DI to access the HubContext. GlobalHostオブジェクトを取得する ASP.NET SignalR で使用される、 HubContext ASP.NET Core SignalR に存在しません。The GlobalHost object that is used in ASP.NET SignalR to get a HubContext doesn't exist in ASP.NET Core SignalR.

HubPipelineHubPipeline

ASP.NET Core SignalR のサポートはありませんHubPipelineモジュール。ASP.NET Core SignalR doesn't have support for HubPipeline modules.

クライアント上の相違点Differences on the client

TypeScriptTypeScript

ASP.NET Core SignalR クライアントがで記述されたTypeScriptします。The ASP.NET Core SignalR client is written in TypeScript. 使用する場合は、JavaScript または TypeScript で記述することができます、 JavaScript クライアントします。You can write in JavaScript or TypeScript when using the JavaScript client.

ホストされている JavaScript クライアントnpmThe JavaScript client is hosted at npm

以前のバージョンで、JavaScript クライアントは、Visual Studio で NuGet パッケージから取得されました。In previous versions, the JavaScript client was obtained through a NuGet package in Visual Studio. Core のバージョン、 @aspnet/signalr npm パッケージには、JavaScript ライブラリが含まれています。For the Core versions, the @aspnet/signalr npm package contains the JavaScript libraries. このパッケージに含まれていない、 ASP.NET Core Web アプリケーションテンプレート。This package isn't included in the ASP.NET Core Web Application template. Npm を入手してインストールを使用して、 @aspnet/signalr npm パッケージ。Use npm to obtain and install the @aspnet/signalr npm package.

npm init -y
npm install @aspnet/signalr

jQueryjQuery

JQuery に依存関係は削除されたが、プロジェクトは、jQuery を引き続き使用できます。The dependency on jQuery has been removed, however projects can still use jQuery.

Internet Explorer のサポートInternet Explorer support

ASP.NET Core SignalR では、Microsoft Internet Explorer 11 以降 (ASP.NET SignalR には、Microsoft Internet Explorer 8 以降がサポートされている) が必要です。ASP.NET Core SignalR requires Microsoft Internet Explorer 11 or later (ASP.NET SignalR supported Microsoft Internet Explorer 8 and later).

JavaScript クライアント メソッドの構文JavaScript client method syntax

JavaScript 構文は、SignalR の以前のバージョンから変更されました。The JavaScript syntax has changed from the previous version of SignalR. 使用してではなく、$connectionオブジェクトを使用して接続を作成、 HubConnectionBuilder API。Rather than using the $connection object, create a connection using the HubConnectionBuilder API.

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/hub")
    .build();

使用して、ハブで呼び出すことができるクライアント メソッドを指定します。Use the on method to specify client methods that the hub can call.

connection.on("ReceiveMessage", (user, message) => {
    const msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    const encodedMsg = user + " says " + msg;
    log(encodedMsg);
});

クライアントのメソッドを作成した後、ハブの接続を開始します。After creating the client method, start the hub connection. チェーンをキャッチログまたはエラーを処理するメソッド。Chain a catch method to log or handle errors.

connection.start().catch(err => console.error(err.toString()));

ハブ プロキシHub proxies

ハブ プロキシが自動的に生成されます。Hub proxies are no longer automatically generated. 代わりに、メソッド名に渡される、呼び出すを文字列としての API。Instead, the method name is passed into the invoke API as a string.

.NET およびその他のクライアント.NET and other clients

Microsoft.AspNetCore.SignalR.Client NuGet パッケージには、ASP.NET Core SignalR の .NET クライアント ライブラリが含まれています。The Microsoft.AspNetCore.SignalR.Client NuGet package contains the .NET client libraries for ASP.NET Core SignalR.

使用して、 HubConnectionBuilder作成し、ハブへの接続のインスタンスを構築します。Use the HubConnectionBuilder to create and build an instance of a connection to a hub.

connection = new HubConnectionBuilder()
    .WithUrl("url")
    .Build();

スケール アウトの違いScaleout differences

ASP.NET SignalR は、SQL Server と Redis をサポートします。ASP.NET SignalR supports SQL Server and Redis. ASP.NET Core SignalR は、Azure SignalR サービスと Redis をサポートします。ASP.NET Core SignalR supports Azure SignalR Service and Redis.

ASP.NETASP.NET

ASP.NET CoreASP.NET Core

その他の技術情報Additional resources