Rozdíly mezi ASP.NET SignalR a ASP.NET Core SignalR

ASP.NET Core SignalR není kompatibilní s klienty nebo servery pro ASP.NET SignalR. Tento článek podrobně popisuje funkce, které byly odebrány nebo změněny v ASP.NET Core SignalR.

Jak identifikovat SignalR verzi

ASP.NET SignalR ASP.NET Core SignalR
Balíček NuGet serveru Microsoft.AspNet.SignalR Žádné Součástí Microsoft.AspNetCore.App sdílené architektury.
Balíčky NuGet klienta Microsoft.AspNet.SignalR. Klienta
Microsoft.AspNet.SignalR.JS
Microsoft.AspNetCore.SignalR. Klienta
Balíček npm klienta JavaScriptu signalr @microsoft/signalr
Java klient Úložiště GitHub (zastaralé) Balíček Maven com.microsoft.signalr
Typ serverové aplikace ASP.NET (System.Web) nebo samoobslužný hostitel OWIN ASP.NET Core
Podporované serverové platformy .NET Framework 4.5 nebo novější .NET Core 3.0 nebo novější
ASP.NET SignalR ASP.NET Core SignalR
Balíček NuGet serveru Microsoft.AspNet.SignalR Microsoft.AspNetCore.App (.NET Core)
Microsoft.AspNetCore.SignalR (.NET Framework)
Balíčky NuGet klienta Microsoft.AspNet.SignalR. Klienta
Microsoft.AspNet.SignalR.JS
Microsoft.AspNetCore.SignalR. Klienta
Balíček npm klienta JavaScriptu signalr @aspnet/signalr
Java klient Úložiště GitHub (zastaralé) Balíček Maven com.microsoft.signalr
Typ serverové aplikace ASP.NET (System.Web) nebo samoobslužný hostitel OWIN ASP.NET Core
Podporované serverové platformy .NET Framework 4.5 nebo novější .NET Framework 4.6.1 nebo novější
.NET Core 2.1 nebo novější

Rozdíly ve funkcích

Automatické opětovné připojení

V ASP.NET SignalR:

  • Ve výchozím nastavení se pokusí znovu připojit k serveru, SignalR pokud dojde k vyřazení připojení.

V ASP.NET Core SignalR:

  • Automatické opětovné připojení se přihlašují s klientem .NET i javascriptovým klientem:
HubConnection connection = new HubConnectionBuilder()
    .WithUrl(new Uri("http://127.0.0.1:5000/chathub"))
    .WithAutomaticReconnect()
    .Build();
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chathub")
    .withAutomaticReconnect()
    .build();

Před ASP.NET Core 3.0 SignalR nepodporuje automatické opětovné připojení. Pokud je klient odpojený, musí uživatel explicitně spustit nové připojení, aby se znovu připojil. V ASP.NET SignalRSignalR se pokusí znovu připojit k serveru, pokud dojde k vyřazení připojení.

Podpora protokolu

ASP.NET Core SignalR podporuje JSON a také nový binární protokol založený na MessagePacku. Kromě toho je možné vytvořit vlastní protokoly.

Přenosy

Přenos Forever Frame není v ASP.NET Core SignalRpodporován .

Rozdíly na serveru

Knihovny ASP.NET Core SignalR na straně serveru jsou součástí Microsoft.AspNetCore.App, které se používají v šabloně webové aplikace ASP.NET Core pro Razor projekty MVC i pro projekty MVC.

ASP.NET Core SignalR je middleware ASP.NET Core. Musí být nakonfigurován voláním AddSignalRStartup.ConfigureServices.

services.AddSignalR()

Pokud chcete nakonfigurovat směrování, namapujte trasy do center uvnitř UseEndpoints volání metody v metodě Startup.Configure .

app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<ChatHub>("/hub");
});

Pokud chcete nakonfigurovat směrování, namapujte trasy do center uvnitř UseSignalR volání metody v metodě Startup.Configure .

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

Rychlé relace

Model horizontálního navýšení kapacity pro ASP.NET SignalR umožňuje klientům znovu se připojit a odesílat zprávy na libovolný server ve farmě. V ASP.NET Core SignalRmusí klient po dobu trvání připojení komunikovat se stejným serverem. Pro horizontální navýšení kapacity pomocí Redisu se vyžadují rychlé relace. U škálování na více instancí pomocí služby Azure SignalR se nevyžadují rychlé relace, protože služba zpracovává připojení k klientům.

Jedno centrum na připojení

V ASP.NET Core SignalRbyl model připojení zjednodušený. Připojení iony jsou vytvářeny přímo do jednoho rozbočovače, nikoli jediné připojení, které se používá ke sdílení přístupu k více rozbočovačům.

Streamování

ASP.NET Core SignalR teď podporuje streamovaná data z centra do klienta.

State

Byla odebrána možnost předat libovolný stav mezi klienty a centrem (často označovaným HubState) a také podporu zpráv o průběhu. V tuto chvíli neexistuje žádný protějšek proxy center.

Trvalé Připojení odebrání

V ASP.NET Core SignalRbyla odstraněna třída Persistent Připojení ion.

GlobalHost

ASP.NET Core má integrované injektáž závislostí (DI) v rámci. Služby můžou pro přístup ke službě HubContext používat di. Objekt GlobalHost , který se používá v ASP.NET SignalR k získání objektu HubContext , neexistuje v ASP.NET Core SignalR.

HubPipeline

ASP.NET Core SignalR nepodporuje HubPipeline moduly.

Rozdíly v klientovi

TypeScript

Klient ASP.NET Core SignalR je napsaný v TypeScriptu. Při použití klienta JavaScriptu můžete psát v JavaScriptu nebo TypeScriptu.

Klient JavaScriptu je hostovaný na npm.

V ASP.NET verzích byl javascriptový klient získán prostřednictvím balíčku NuGet v sadě Visual Studio. Ve verzích @microsoft/signalr ASP.NET Core obsahuje balíček npm knihovny JavaScriptu. Tento balíček není součástí šablony webové aplikace ASP.NET Core. K získání a instalaci @microsoft/signalr balíčku npm použijte npm.

npm init -y
npm install @microsoft/signalr

V ASP.NET verzích byl javascriptový klient získán prostřednictvím balíčku NuGet v sadě Visual Studio. Ve verzích @aspnet/signalr ASP.NET Core obsahuje balíček npm knihovny JavaScriptu. Tento balíček není součástí šablony webové aplikace ASP.NET Core. K získání a instalaci @aspnet/signalr balíčku npm použijte npm.

npm init -y
npm install @aspnet/signalr

jQuery

Závislost na jQuery byla odebrána, ale projekty mohou stále používat jQuery.

Podpora Internet Exploreru

ASP.NET Core SignalR nepodporuje Aplikaci Microsoft Internet Explorer, zatímco ASP.NET SignalR podporuje aplikaci Microsoft Internet Explorer 8 nebo novější. Další informace najdete v tématu ASP.NET podporovaných platforem CoreSignalR.

Syntaxe metody klienta JavaScriptu

Syntaxe JavaScriptu se změnila z verze ASP.NET SignalR. Místo použití objektu $connection vytvořte připojení pomocí hubu Připojení ionBuilder API.

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

Metodu On použijte k určení metod klienta, které centrum může volat.

Syntaxe JavaScriptu se změnila z verze ASP.NET SignalR. Místo použití objektu $connection vytvořte připojení pomocí hubu Připojení ionBuilder API.

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

Metodu On použijte k určení metod klienta, které centrum může volat.

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

Po vytvoření metody klienta spusťte připojení centra. Zřetězte metodu catch pro protokolování nebo zpracování chyb.

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

Proxy servery centra

Proxy servery rozbočovačů se už negenerují automaticky. Místo toho se název metody předá do rozhraní API vyvolání jako řetězec.

Proxy servery rozbočovačů se už negenerují automaticky. Místo toho se název metody předá do rozhraní API vyvolání jako řetězec.

.NET a další klienti

Microsoft.AspNetCore .SignalR. Balíček NuGet klienta obsahuje klientské knihovny .NET pro ASP.NET Core SignalR.

HubConnectionBuilder Použijte k vytvoření a sestavení instance připojení k centru.

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

Rozdíly v horizontálním navýšení kapacity

SignalR ASP.NET podporuje SQL Server a Redis. ASP.NET Core SignalR podporuje Azure SignalR Service a Redis.

ASP.NET

ASP.NET Core

Další prostředky