Unterschiede zwischen SignalR für ASP.NET und ASP.NET Core SignalRDifferences between ASP.NET SignalR and ASP.NET Core SignalR

ASP.NET Core SignalR nicht kompatibel mit Clients oder Servern für ASP.NET SignalR.ASP.NET Core SignalR isn't compatible with clients or servers for ASP.NET SignalR. In diesem Artikel werden die Funktionen, die in ASP.NET Core SignalR geändert oder entfernt wurden.This article details features which have been removed or changed in ASP.NET Core SignalR.

So identifizieren Sie die SignalR-versionHow to identify the SignalR version

ASP.NET SignalRASP.NET SignalR ASP.NET Core SignalRASP.NET Core SignalR
Server-NuGet-PaketServer 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)
Die NuGet-PaketeClient NuGet Packages Microsoft.AspNet.SignalR.ClientMicrosoft.AspNet.SignalR.Client
Microsoft.AspNet.SignalR.JSMicrosoft.AspNet.SignalR.JS
Microsoft.AspNetCore.SignalR.ClientMicrosoft.AspNetCore.SignalR.Client
Client-Npm-PaketsClient npm Package signalrsignalr @aspnet/signalr
Java-ClientJava Client GitHub-Repository (veraltet)GitHub Repository (deprecated) Maven-Paket com.microsoft.signalrMaven package com.microsoft.signalr
Server App-TypServer App Type ASP.NET ("System.Web") oder SelbstgehostetemASP.NET (System.Web) or OWIN Self-Host ASP.NET CoreASP.NET Core
Unterstützte PlattformenSupported Server Platforms .NET Framework 4.5 oder höher.NET Framework 4.5 or later .NET Framework 4.6.1 oder höher.NET Framework 4.6.1 or later
.NET Core 2.1 oder höher.NET Core 2.1 or later

FunktionsunterschiedeFeature differences

Automatische VerbindungenAutomatic reconnects

Automatische Verbindungen werden in ASP.NET Core SignalR nicht unterstützt.Automatic reconnects aren't supported in ASP.NET Core SignalR. Wenn der Client getrennt wird, muss der Benutzer eine neue Verbindung explizit starten, wenn sie erneut eine Verbindung herstellen möchten.If the client is disconnected, the user must explicitly start a new connection if they want to reconnect. SignalR versucht, in ASP.NET SignalR zum Server hergestellt werden soll, wenn die Verbindung getrennt wird.In ASP.NET SignalR, SignalR attempts to reconnect to the server if the connection is dropped.

Unterstützung des ProtokollsProtocol support

SignalR für ASP.NET Core unterstützt JSON als auch ein neues binäres Protokoll, die basierend auf MessagePack.ASP.NET Core SignalR supports JSON, as well as a new binary protocol based on MessagePack. Darüber hinaus können benutzerdefinierte Protokolle erstellt werden.Additionally, custom protocols can be created.

TransportprotokolleTransports

Der Forever Frame-Transport wird in ASP.NET Core SignalR nicht unterstützt.The Forever Frame transport is not supported in ASP.NET Core SignalR.

Unterschiede, auf dem serverDifferences on the server

Die ASP.NET Core SignalR serverseitige Bibliotheken befinden sich der Microsoft.AspNetCore.App metapaket Paket, das Teil der ASP.NET Core-Webanwendung Vorlage für Razor und MVC Projekte.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 ist eine ASP.NET Core-Middleware, sodass es durch Aufrufen von konfiguriert werden muss AddSignalR in Startup.ConfigureServices.ASP.NET Core SignalR is an ASP.NET Core middleware, so it must be configured by calling AddSignalR in Startup.ConfigureServices.

services.AddSignalR()

Zum Konfigurieren des Routings, ordnen Sie Routen für Hubs innerhalb der UseSignalR -Methodenaufruf in der Startup.Configure Methode.To configure routing, map routes to hubs inside the UseSignalR method call in the Startup.Configure method.

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

Persistente SitzungenSticky sessions

Das Modell mit horizontaler Skalierung für ASP.NET SignalR kann Clients erneut eine Verbindung herzustellen, und Senden von Nachrichten an einem beliebigen Server in der Farm.The scaleout model for ASP.NET SignalR allows clients to reconnect and send messages to any server in the farm. In ASP.NET Core SignalR muss der Client für die Dauer der Verbindung mit dem gleichen Server interagieren.In ASP.NET Core SignalR, the client must interact with the same server for the duration of the connection. Für die horizontale Skalierung mit Redis bedeutet dies, dass es sich bei persistente Sitzungen erforderlich sind.For scaleout using Redis, that means sticky sessions are required. Für die Verwendung der Sendewarteschlange für horizontale Skalierung Azure SignalR Service, persistente Sitzungen sind nicht erforderlich, da der Dienst übernimmt die Verbindungen mit Clients.For scaleout using Azure SignalR Service, sticky sessions are not required because the service handles connections to clients.

Ein Hub pro VerbindungSingle hub per connection

In ASP.NET Core SignalR wurde das Verbindungsmodell vereinfacht.In ASP.NET Core SignalR, the connection model has been simplified. Verbindungen werden direkt an eine einzelne Verbindung, die Zugriff auf mehrere Hubs freigeben verwendet wird, anstatt einen einzelnen Hub hergestellt werden.Connections are made directly to a single hub, rather than a single connection being used to share access to multiple hubs.

StreamingStreaming

Unterstützt nun das ASP.NET Core SignalR Streamingdaten aus dem Hub an den Client.ASP.NET Core SignalR now supports streaming data from the hub to the client.

ZustandState

Die Möglichkeit, die oft ausgegebene Befehlszeilen Zustand zwischen Clients und dem Hub (oft als HubState bezeichnet) übergeben wurde, sowie Unterstützung für Meldungen zum Druckfortschritt aufgehoben.The ability to pass arbitrary state between clients and the hub (often called HubState) has been removed, as well as support for progress messages. Es gibt keine Entsprechung der Hub-Proxys im Moment ein.There is no counterpart of hub proxies at the moment.

PersistentConnection entfernenPersistentConnection removal

In ASP.NET Core SignalR die PersistentConnection Klasse wurde entfernt.In ASP.NET Core SignalR, the PersistentConnection class has been removed.

GlobalHostGlobalHost

ASP.NET Core verfügt über Abhängigkeitsinjektion (Dependency Injection), die im Framework integriert.ASP.NET Core has dependency injection (DI) built into the framework. Dienste können DI verwenden, um Zugriff auf die HubContext.Services can use DI to access the HubContext. Die GlobalHost -Objekt, das in ASP.NET SignalR, zum Abrufen verwendet wird einer HubContext in ASP.NET Core SignalR nicht vorhanden ist.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 keine Unterstützung für HubPipeline Module.ASP.NET Core SignalR doesn't have support for HubPipeline modules.

Unterschiede, auf dem clientDifferences on the client

TypeScriptTypeScript

Der ASP.NET Core SignalR-Client hat TypeScript.The ASP.NET Core SignalR client is written in TypeScript. Sie können in JavaScript oder TypeScript schreiben, bei Verwendung der JavaScript-Client.You can write in JavaScript or TypeScript when using the JavaScript client.

Der JavaScript-Client befindet sich am NpmThe JavaScript client is hosted at npm

In früheren Versionen wurde der JavaScript-Client über NuGet-Paket in Visual Studio abgerufen.In previous versions, the JavaScript client was obtained through a NuGet package in Visual Studio. Für die Core-Versionen die @aspnet/signalr Npm-Paket enthält die JavaScript-Bibliotheken.For the Core versions, the @aspnet/signalr npm package contains the JavaScript libraries. Dieses Paket nicht enthalten, der ASP.NET Core-Webanwendung Vorlage.This package isn't included in the ASP.NET Core Web Application template. Mithilfe von Npm abrufen und Installieren der @aspnet/signalr Npm-Paket.Use npm to obtain and install the @aspnet/signalr npm package.

npm init -y
npm install @aspnet/signalr

jQueryjQuery

Die Abhängigkeit von jQuery wurde entfernt, aber Projekte jQuery weiterhin verwenden können.The dependency on jQuery has been removed, however projects can still use jQuery.

Internet Explorer-supportInternet Explorer support

ASP.NET Core SignalR erfordert Microsoft InternetExplorer 11 oder höher (ASP.NET SignalR unterstützt Microsoft InternetExplorer 8 und höher).ASP.NET Core SignalR requires Microsoft Internet Explorer 11 or later (ASP.NET SignalR supported Microsoft Internet Explorer 8 and later).

JavaScript-Client-MethodensyntaxJavaScript client method syntax

Die JavaScript-Syntax wurde aus der vorherigen Version von SignalR geändert.The JavaScript syntax has changed from the previous version of SignalR. Anstatt die $connection Objekt, erstellen Sie eine Verbindung mit der HubConnectionBuilder API.Rather than using the $connection object, create a connection using the HubConnectionBuilder API.

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

Verwenden der auf Methode, um die Clientmethoden angeben, die der Hub aufgerufen werden kann.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);
});

Starten Sie nach dem Erstellen der-Methode, die Hub-Verbindung ein.After creating the client method, start the hub connection. Kette eine catch Methode zum Anmelden oder Fehler zu beheben.Chain a catch method to log or handle errors.

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

Hub-ProxysHub proxies

Hub-Proxys werden nicht mehr automatisch generiert.Hub proxies are no longer automatically generated. Stattdessen wird der Name der Methode übergeben, in der Aufrufen API als Zeichenfolge.Instead, the method name is passed into the invoke API as a string.

.NET und andere clients.NET and other clients

Die Microsoft.AspNetCore.SignalR.Client NuGet-Paket enthält die .NET Client-Bibliotheken für ASP.NET Core SignalR.The Microsoft.AspNetCore.SignalR.Client NuGet package contains the .NET client libraries for ASP.NET Core SignalR.

Verwenden der HubConnectionBuilder erstellen und entwickeln eine Instanz einer Verbindung mit einem Hub.Use the HubConnectionBuilder to create and build an instance of a connection to a hub.

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

Horizontale Skalierung UnterschiedeScaleout differences

ASP.NET SignalR unterstützt SQL Server und Redis.ASP.NET SignalR supports SQL Server and Redis. ASP.NET Core SignalR unterstützt Azure SignalR Service und Redis.ASP.NET Core SignalR supports Azure SignalR Service and Redis.

ASP.NETASP.NET

ASP.NET CoreASP.NET Core

Zusätzliche RessourcenAdditional resources