Różnice między ASP.NET SignalR i ASP.NET Core SignalR
ASP.NET Core SignalR nie jest zgodny z klientami ani serwerami dla ASP.NET SignalR. Ten artykuł zawiera szczegółowe informacje o funkcjach, które zostały usunięte lub zmienione w programie ASP.NET Core SignalR.
Jak zidentyfikować SignalR wersję
ASP.NET SignalR | ASP.NET Core SignalR | |
---|---|---|
Pakiet NuGet serwera | Microsoft.AspNet.SignalR | Brak. Uwzględnione w strukturze udostępnionej Microsoft.AspNetCore.App . |
Pakiety NuGet klienta | Microsoft.AspNet.SignalR. Klient Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klient |
Pakiet npm klienta JavaScript | signalr | @microsoft/signalr |
Klienta środowiska Java | Repozytorium GitHub (przestarzałe) | Pakiet Maven com.microsoft.signalr |
Typ aplikacji serwera | ASP.NET (System.Web) lub OWIN Self-Host | ASP.NET Core |
Obsługiwane platformy serwerów | .NET Framework 4.5 lub nowszy | .NET Core 3.0 lub nowszy |
ASP.NET SignalR | ASP.NET Core SignalR | |
---|---|---|
Pakiet NuGet serwera | Microsoft.AspNet.SignalR | Microsoft.AspNetCore.App (.NET Core) Microsoft.AspNetCore.SignalR (.NET Framework) |
Pakiety NuGet klienta | Microsoft.AspNet.SignalR. Klient Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klient |
Pakiet npm klienta JavaScript | signalr | @aspnet/signalr |
Klienta środowiska Java | Repozytorium GitHub (przestarzałe) | Pakiet Maven com.microsoft.signalr |
Typ aplikacji serwera | ASP.NET (System.Web) lub OWIN Self-Host | ASP.NET Core |
Obsługiwane platformy serwerów | .NET Framework 4.5 lub nowszy | .NET Framework 4.6.1 lub nowszy .NET Core 2.1 lub nowszy |
Różnice między funkcjami
Automatyczne ponowne nawiązywanie połączeń
W ASP.NET SignalR:
- Domyślnie próbuje ponownie nawiązać połączenie z serwerem, SignalR jeśli połączenie zostanie przerwane.
W ASP.NET Core SignalR:
- Automatyczne ponowne nawiązywanie połączeń jest wyrażane zarówno przy użyciu klienta platformy .NET, jak i klienta JavaScript:
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();
Przed ASP.NET Core 3.0 SignalR nie obsługuje automatycznych ponownych połączeń. Jeśli klient zostanie odłączony, użytkownik musi jawnie uruchomić nowe połączenie, aby ponownie nawiązać połączenie. W ASP.NET SignalRSignalR program próbuje ponownie nawiązać połączenie z serwerem, jeśli połączenie zostanie przerwane.
Obsługa protokołów
ASP.NET Core SignalR obsługuje kod JSON, a także nowy protokół binarny oparty na usłudze MessagePack. Ponadto można tworzyć niestandardowe protokoły.
Transporty
Transport Forever Frame nie jest obsługiwany w systemie ASP.NET Core SignalR.
Różnice na serwerze
Biblioteki po stronie serwera ASP.NET Core SignalR znajdują się w Microsoft.AspNetCore.App, która jest używana w szablonie ASP.NET Core Web Application dla Razor projektów i MVC.
ASP.NET Core SignalR to oprogramowanie pośredniczące ASP.NET Core. Należy go skonfigurować przez wywołanie AddSignalR metody w pliku Startup.ConfigureServices
.
services.AddSignalR()
Aby skonfigurować routing, zamapuj trasy na koncentratory wewnątrz UseEndpoints wywołania metody w metodzie Startup.Configure
.
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/hub");
});
Aby skonfigurować routing, zamapuj trasy na koncentratory wewnątrz UseSignalR wywołania metody w metodzie Startup.Configure
.
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/hub");
});
Sesje sticky
Model skalowania w poziomie dla ASP.NET SignalR umożliwia klientom ponowne łączenie i wysyłanie komunikatów do dowolnego serwera w farmie. W programie ASP.NET Core SignalRklient musi wchodzić w interakcję z tym samym serwerem przez czas trwania połączenia. W przypadku skalowania w poziomie przy użyciu usługi Redis oznacza to, że wymagane są sesje sticky. W przypadku skalowania w poziomie przy użyciu usługi platformy Azure SignalR sesje sticky nie są wymagane, ponieważ usługa obsługuje połączenia z klientami.
Pojedyncze centrum na połączenie
W ASP.NET Core SignalRmodel połączenia został uproszczony. Połączenia są wykonywane bezpośrednio z jednym koncentratorem, a nie z jednym połączeniem używanym do udostępniania dostępu do wielu centrów.
Przesyłanie strumieniowe
ASP.NET Core SignalR obsługuje teraz przesyłanie strumieniowe danych z centrum do klienta.
Stan
Możliwość przekazywania dowolnego stanu między klientami a koncentratorem (często nazywanym HubState
) została usunięta, a także obsługa komunikatów postępu. Obecnie nie ma odpowiednika serwerów proxy koncentratora.
Trwałe usuwanie połączenia
W ASP.NET Core SignalRusunięto klasę PersistentConnection .
GlobalHost
ASP.NET Core ma wbudowaną iniekcję zależności (DI) w platformę. Usługi mogą uzyskiwać dostęp do elementu HubContext przy użyciu di. Obiekt GlobalHost
używany w ASP.NET SignalR w celu pobrania elementu HubContext
nie istnieje w ASP.NET Core SignalR.
HubPipeline
ASP.NET Core SignalR nie ma obsługi HubPipeline
modułów.
Różnice w kliencie
TypeScript
Klient ASP.NET Core SignalR jest napisany w języku TypeScript. Możesz pisać w języku JavaScript lub TypeScript podczas korzystania z klienta JavaScript.
Klient języka JavaScript jest hostowany na serwerze npm
W ASP.NET wersjach klient JavaScript został uzyskany za pośrednictwem pakietu NuGet w programie Visual Studio. W wersjach @microsoft/signalr
ASP.NET Core pakiet npm zawiera biblioteki JavaScript. Ten pakiet nie jest uwzględniony w szablonie aplikacji internetowej platformy ASP.NET Core. Użyj narzędzia npm, aby uzyskać i zainstalować @microsoft/signalr
pakiet npm.
npm init -y
npm install @microsoft/signalr
W ASP.NET wersjach klient JavaScript został uzyskany za pośrednictwem pakietu NuGet w programie Visual Studio. W wersjach @aspnet/signalr
ASP.NET Core pakiet npm zawiera biblioteki JavaScript. Ten pakiet nie jest uwzględniony w szablonie aplikacji internetowej platformy ASP.NET Core. Użyj narzędzia npm, aby uzyskać i zainstalować @aspnet/signalr
pakiet npm.
npm init -y
npm install @aspnet/signalr
jQuery
Zależność od zapytania jQuery została usunięta, jednak projekty nadal mogą używać trybu jQuery.
Obsługa programu Internet Explorer
ASP.NET Core SignalR nie obsługuje programu Microsoft Internet Explorer, natomiast ASP.NET SignalR obsługuje program Microsoft Internet Explorer 8 lub nowszy. Aby uzyskać więcej informacji, zobacz platformy obsługiwane przez platformy ASP.NET CoreSignalR.
Składnia metody klienta języka JavaScript
Składnia języka JavaScript została zmieniona z ASP.NET wersji programu SignalR. Zamiast używać $connection
obiektu, utwórz połączenie przy użyciu interfejsu API HubConnectionBuilder .
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Użyj metody on, aby określić metody klienta, które centrum może wywołać.
Składnia języka JavaScript została zmieniona z ASP.NET wersji programu SignalR. Zamiast używać $connection
obiektu, utwórz połączenie przy użyciu interfejsu API HubConnectionBuilder .
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Użyj metody on, aby określić metody klienta, które centrum może wywołać.
connection.on("ReceiveMessage", (user, message) => {
const msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
const encodedMsg = `${user} says ${msg}`;
console.log(encodedMsg);
});
Po utworzeniu metody klienta uruchom połączenie centrum. Utwórz łańcuch metody catch w celu rejestrowania lub obsługi błędów.
connection.start().catch(err => console.error(err));
Serwery proxy koncentratora
Serwery proxy koncentratora nie są już generowane automatycznie. Zamiast tego nazwa metody jest przekazywana do interfejsu API wywołania jako ciąg.
Serwery proxy koncentratora nie są już generowane automatycznie. Zamiast tego nazwa metody jest przekazywana do interfejsu API wywołania jako ciąg.
.NET i inni klienci
Microsoft.AspNetCore .SignalR. Pakiet NuGet klienta zawiera biblioteki klienta platformy .NET dla platformy ASP.NET Core SignalR.
Użyj polecenia , HubConnectionBuilder aby utworzyć i utworzyć wystąpienie połączenia z koncentratorem.
connection = new HubConnectionBuilder()
.WithUrl("url")
.Build();
Różnice w poziomie skalowania
SignalR ASP.NET obsługuje programy SQL Server i Redis. platforma ASP.NET Core SignalR obsługuje usługi platformy Azure SignalR i usługę Redis.
ASP.NET
- SignalR skalowanie w poziomie za pomocą usługi Azure Service Bus
- SignalR skalowanie w poziomie za pomocą usługi Redis
- SignalR skalowanie w poziomie za pomocą programu SQL Server