Skillnader mellan ASP.NET SignalR och ASP.NET Core SignalR
ASP.NET Core SignalR är inte kompatibel med klienter eller servrar för ASP.NET SignalR. Den här artikeln beskriver funktioner som har tagits bort eller ändrats i ASP.NET Core SignalR.
Så här identifierar du SignalR-versionen
ASP.NET SignalR | ASP.NET Core SignalR | |
---|---|---|
Server NuGet-paket | Microsoft.AspNet.SignalR | Ingen. Ingår i det Microsoft.AspNetCore.App delat ramverk. |
Client NuGet-paket |
Microsoft.AspNet.SignalR. Klient Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klient |
JavaScript-klientens npm-paket | signalr | @microsoft/signalr |
Java-klient | GitHub-lagringsplats (inaktuell) | Maven-paket com.microsoft.signalr |
Server-apptyp | ASP.NET (System.Web) eller OWIN Self-Host | ASP.NET Core |
serverplattformar som stöds | .NET Framework 4.5 eller senare | .NET Core 3.0 eller senare |
ASP.NET SignalR | ASP.NET Core SignalR | |
---|---|---|
NuGet-paketet för servern | Microsoft.AspNet.SignalR |
Microsoft.AspNetCore.App (.NET Core) Microsoft.AspNetCore.SignalR (.NET Framework) |
Klient NuGet-paket |
Microsoft.AspNet.SignalR. Klient Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klient |
JavaScript-klientens npm-paket | signalr | @aspnet/signalr |
Java-klient | GitHub-lagringsplats (inaktuell) | Maven-paket com.microsoft.signalr |
Server-apptyp | ASP.NET (System.Web) eller OWIN Self-Host | ASP.NET Core |
serverplattformar som stöds | .NET Framework 4.5 eller senare | .NET Framework 4.6.1 eller senare .NET Core 2.1 eller senare |
Funktionsskillnader
Automatisk återanslutning
I ASP.NET SignalR:
- Som standard försöker SignalR återansluta till servern om anslutningen avbryts.
I ASP.NET Core SignalR:
- Automatiska återanslutningar är valfria med både .NET-klienten och JavaScript-klienten:
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();
Innan ASP.NET Core 3.0 stöder SignalR inte automatiska återanslutningar. Om klienten är frånkopplad måste användaren uttryckligen starta en ny anslutning för att återansluta. I ASP.NET SignalRförsöker SignalR återansluta till servern om anslutningen tas bort.
Protokollstöd
ASP.NET Core SignalR stöder JSON, samt ett nytt binärt protokoll baserat på MessagePack. Dessutom kan anpassade protokoll skapas.
Transporter
Transporten forever frame stöds inte i ASP.NET Core SignalR.
Skillnader på servern
Biblioteken ASP.NET Core SignalR på serversidan ingår i Microsoft.AspNetCore.App, som används i mallen ASP.NET Core Web Application för både Razor- och MVC-projekt.
ASP.NET Core SignalR är ett ASP.NET Core-mellanprogram. Den måste konfigureras genom att anropa AddSignalR i Startup.ConfigureServices
.
services.AddSignalR()
Om du vill konfigurera routning mappar du vägar till hubbar i UseEndpoints-metodanropet i metoden Startup.Configure
.
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/hub");
});
Om du vill konfigurera routning mappar du vägar till hubbar i UseSignalR-metodanropet i metoden Startup.Configure
.
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/hub");
});
Ihållande sessioner
Med skalningsmodellen för ASP.NET SignalR kan klienter återansluta och skicka meddelanden till valfri server i servergruppen. I ASP.NET Core SignalRmåste klienten interagera med samma server under hela anslutningen. För utskalning med Redis innebär det att permanenta sessioner krävs. För utskalning med Azure SignalR Servicekrävs inte beständiga sessioner eftersom tjänsten hanterar anslutningarna till klienterna.
Enskild hubb per anslutning
I ASP.NET Core SignalRhar anslutningsmodellen förenklats. Anslutningar görs direkt till en enda hubb, i stället för att en enda anslutning används för att dela åtkomst till flera hubbar.
Direktuppspelning
ASP.NET Core SignalR stöder nu strömmande data från hubben till klienten.
Stat
Möjligheten att skicka godtyckligt tillstånd mellan klienter och hubben (kallas ofta HubState
) har tagits bort samt stöd för förloppsmeddelanden. Det finns för närvarande ingen motsvarighet till hubbproxy.
Borttagning av PersistentConnection
I ASP.NET Core SignalRhar klassen PersistentConnection tagits bort.
GlobalHost
ASP.NET Core har en inbyggd beroendeinmatning (DI) i ramverket. Tjänster kan använda DI för att komma åt HubContext. Det GlobalHost
objekt som används i ASP.NET SignalR för att hämta en HubContext
finns inte i ASP.NET Core SignalR.
HubPipeline
ASP.NET Core SignalR har inte stöd för HubPipeline
moduler.
Skillnader på klienten
TypeScript
ASP.NET Core-klienten SignalR skrivs i TypeScript -. Du kan skriva i JavaScript eller TypeScript när du använder JavaScript-klienten.
JavaScript-klienten finns på npm
I ASP.NET versioner hämtades JavaScript-klienten via ett NuGet-paket i Visual Studio. I ASP.NET Core-versionerna innehåller @microsoft/signalr
npm-paketet JavaScript-biblioteken. Det här paketet ingår inte i mallen ASP.NET Core Web Application. Använd npm för att hämta och installera @microsoft/signalr
npm-paketet.
npm init -y
npm install @microsoft/signalr
I ASP.NET versioner hämtades JavaScript-klienten via ett NuGet-paket i Visual Studio. I ASP.NET Core-versionerna innehåller @aspnet/signalr
npm-paketet JavaScript-biblioteken. Det här paketet ingår inte i mallen ASP.NET Core Web Application. Använd npm för att hämta och installera @aspnet/signalr
npm-paketet.
npm init -y
npm install @aspnet/signalr
jQuery
Beroendet av jQuery har tagits bort, men projekt kan fortfarande använda jQuery.
Stöd för Internet Explorer
ASP.NET Core SignalR stöder inte Microsoft Internet Explorer, medan ASP.NET SignalR stöder Microsoft Internet Explorer 8 eller senare. Mer information finns i ASP.NET Core SignalR stödda plattformar.
Syntax för JavaScript-klientmetod
JavaScript-syntaxen har ändrats från den ASP.NET versionen av SignalR. I stället för att använda $connection
-objektet skapar du en anslutning med hjälp av api:et HubConnectionBuilder.
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Använd metoden på för att ange klientmetoder som hubben kan anropa.
JavaScript-syntaxen har ändrats från den ASP.NET versionen av SignalR. I stället för att använda $connection
-objektet skapar du en anslutning med hjälp av api:et HubConnectionBuilder.
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Använd metoden på för att ange klientmetoder som hubben kan anropa.
connection.on("ReceiveMessage", (user, message) => {
const msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
const encodedMsg = `${user} says ${msg}`;
console.log(encodedMsg);
});
När du har skapat klientmetoden startar du hubbanslutningen. Länka en fånga metod för att logga eller hantera fel.
connection.start().catch(err => console.error(err));
Hubb-proxies
Hubbproxy genereras inte längre automatiskt. I stället skickas metodens namn som en sträng till anropa API.
Hubbproxy genereras inte längre automatiskt. Istället skickas metodnamnet som en sträng till API:et som anropas med .
.NET och andra klienter
The Microsoft.AspNetCore.SignalR.Client NuGet-paketet innehåller .NET-klientbiblioteken för ASP.NET Core SignalR.
Använd HubConnectionBuilder för att skapa och bygga en instans av en anslutning till en hubb.
connection = new HubConnectionBuilder()
.WithUrl("url")
.Build();
Utskalningsskillnader
ASP.NET SignalR stöder SQL Server och Redis. ASP.NET Core SignalR stöder Azure SignalR Service och Redis.
ASP.NET
- SignalR utskalning med Azure Service Bus
- SignalR skalning utåt med Redis
- SignalR utskalning med SQL Server
ASP.NET Core
Ytterligare resurser
ASP.NET Core