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 | Nezaokrouhlovat. Součástí Microsoft.AspNetCore.App sdílené architektury. |
Balíčky NuGet klienta |
Microsoft.AspNet.SignalR. Klient Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klient |
Balíček npm klienta JavaScriptu | signalizátoru | @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. Klient Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klient |
Balíček npm klienta JavaScriptu | signalizátoru | @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í SignalR Azure 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í se vytváří přímo k jednomu rozbočovači, nikoli k jedinému 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.
Odebrání funkce PersistentConnection
V ASP.NET Core SignalRbyla odstraněna třída PersistentConnection.
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 SignalR Core.
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í rozhraní API HubConnectionBuilder .
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í rozhraní API HubConnectionBuilder .
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, "&").replace(/</g, "<").replace(/>/g, ">");
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
- SignalR horizontální navýšení kapacity s využitím služby Azure Service Bus
- SignalR horizontální navýšení kapacity s Redisem
- SignalR horizontální navýšení kapacity s VYUŽITÍM SQL Serveru