Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
ASP.NET Core SignalR não é compatível com clientes ou servidores para ASP.NET SignalR. Este artigo detalha os recursos que foram removidos ou alterados no ASP.NET Core SignalR.
Como identificar a SignalR versão
ASP.NET SignalR | ASP.NET Núcleo SignalR | |
---|---|---|
Pacote NuGet do servidor | Microsoft.AspNet.SignalR | Nenhum. Incluído no quadro Microsoft.AspNetCore.App partilhado. |
Pacotes NuGet Cliente |
Microsoft.AspNet.SignalR. Cliente Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Cliente |
Pacote npm de cliente JavaScript | SignalR | @microsoft/signalr |
Cliente Java | Repositório GitHub (preterido) | Pacote Maven com.microsoft.signalr |
Tipo de aplicativo de servidor | ASP.NET (System.Web) ou OWIN Self-Host | ASP.NET Núcleo |
Plataformas de servidor suportadas | .NET Framework 4.5 ou posterior | .NET Core 3.0 ou posterior |
ASP.NET SignalR | ASP.NET Núcleo SignalR | |
---|---|---|
Pacote NuGet do servidor | Microsoft.AspNet.SignalR |
Microsoft.AspNetCore.App (.NET Core) Microsoft.AspNetCore.SignalR (.NET Framework) |
Pacotes NuGet Cliente |
Microsoft.AspNet.SignalR. Cliente Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Cliente |
Pacote npm de cliente JavaScript | SignalR | @aspnet/signalr |
Cliente Java | Repositório GitHub (preterido) | Pacote Maven com.microsoft.signalr |
Tipo de aplicativo de servidor | ASP.NET (System.Web) ou OWIN Self-Host | ASP.NET Núcleo |
Plataformas de servidor suportadas | .NET Framework 4.5 ou posterior | .NET Framework 4.6.1 ou posterior .NET Core 2.1 ou posterior |
Diferenças entre caraterísticas
Reconexões automáticas
Em ASP.NET SignalR:
- Por padrão, SignalR tenta se reconectar ao servidor se a conexão for interrompida.
No ASP.NET Core SignalR:
- As reconexões automáticas são configuráveis com o cliente .NET e o cliente 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();
Antes do ASP.NET Core 3.0, SignalR não suportava reconexões automáticas. Se o cliente estiver desconectado, o usuário deverá iniciar explicitamente uma nova conexão para se reconectar. No ASP.NET SignalR, SignalR tenta se reconectar ao servidor se a conexão for interrompida.
Suporte de protocolo
ASP.NET Core SignalR suporta JSON, bem como um novo protocolo binário baseado em MessagePack. Além disso, protocolos personalizados podem ser criados.
Transportes
O transporte Forever Frame não é suportado no ASP.NET Core SignalR.
Diferenças no servidor
As bibliotecas do lado do servidor ASP.NET Core SignalR estão incluídas no Microsoft.AspNetCore.App, que é usado no modelo ASP.NET Core Web Application para projetos Razor e MVC.
ASP.NET Core SignalR é um middleware ASP.NET Core. Deve ser configurado através da chamada de AddSignalR em Startup.ConfigureServices
.
services.AddSignalR()
Para configurar o roteamento, mapeie rotas para hubs dentro do método UseEndpoints na chamada do método Startup.Configure
.
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/hub");
});
Para configurar o roteamento, mapeie rotas para hubs dentro do método UseSignalR na chamada do método Startup.Configure
.
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/hub");
});
Sessões persistentes
O modelo de expansão para ASP.NET SignalR permite que os clientes se reconectem e enviem mensagens para qualquer servidor no farm. No ASP.NET Core SignalR, o cliente deve interagir com o mesmo servidor durante a duração da conexão. Para expansão horizontal usando Redis, isso significa que sessões persistentes são necessárias. Para expansão usando o Serviço do AzureSignalR, sessões fixas não são necessárias porque o serviço lida com conexões com clientes.
Hub único por conexão
No ASP.NET Core SignalR, o modelo de conexão foi simplificado. As conexões são feitas diretamente a um único hub, em vez de uma única conexão ser usada para compartilhar o acesso a vários hubs.
Serviço de streaming
ASP.NET Core SignalR agora suporta dados em streaming do hub para o cliente.
Estado
A capacidade de passar o estado arbitrário entre os clientes e o hub (muitas vezes chamado de HubState
) foi removida, assim como o suporte para mensagens de progresso. Não há nenhum equivalente de proxies de hub no momento.
Remoção de PersistentConnection
No ASP.NET Core SignalR, a classe PersistentConnection foi removida.
GlobalHost
ASP.NET Core tem injeção de dependência (DI) incorporada na estrutura. Os serviços podem usar DI para acessar o HubContext. O GlobalHost
objeto que é usado no ASP.NET SignalR para obter um HubContext
não existe no ASP.NET Core SignalR.
HubPipeline
ASP.NET Core SignalR não tem suporte para HubPipeline
módulos.
Diferenças no cliente
TypeScript
O cliente ASP.NET Core SignalR é escrito em TypeScript. Você pode escrever em JavaScript ou TypeScript ao usar o cliente JavaScript.
O cliente JavaScript está hospedado no npm
Em ASP.NET versões, o cliente JavaScript foi obtido por meio de um pacote NuGet no Visual Studio. Nas versões ASP.NET Core, o @microsoft/signalr
pacote npm contém as bibliotecas JavaScript. Este pacote não está incluído no modelo ASP.NET Core Web Application . Use npm para obter e instalar o @microsoft/signalr
pacote npm.
npm init -y
npm install @microsoft/signalr
Em ASP.NET versões, o cliente JavaScript foi obtido por meio de um pacote NuGet no Visual Studio. Nas versões ASP.NET Core, o @aspnet/signalr
pacote npm contém as bibliotecas JavaScript. Este pacote não está incluído no modelo ASP.NET Core Web Application . Use npm para obter e instalar o @aspnet/signalr
pacote npm.
npm init -y
npm install @aspnet/signalr
jConsulta
A dependência do jQuery foi removida, no entanto, os projetos ainda podem usar o jQuery.
Suporte do Internet Explorer
O ASP.NET Core SignalR não suporta o Microsoft Internet Explorer, enquanto o ASP.NET SignalR suporta o Microsoft Internet Explorer 8 ou posterior. Para obter mais informações, consulte ASP.NET Core SignalR plataformas suportadas.
Sintaxe do método do cliente JavaScript
A sintaxe do JavaScript foi alterada em relação à versão ASP.NET de SignalR. Em vez de usar o $connection
objeto, crie uma conexão usando a API do HubConnectionBuilder .
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Use o método on para especificar métodos de cliente que o hub pode chamar.
A sintaxe do JavaScript foi alterada em relação à versão ASP.NET de SignalR. Em vez de usar o $connection
objeto, crie uma conexão usando a API do HubConnectionBuilder .
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Use o método on para especificar métodos de cliente que o hub pode chamar.
connection.on("ReceiveMessage", (user, message) => {
const msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
const encodedMsg = `${user} says ${msg}`;
console.log(encodedMsg);
});
Depois de criar o método cliente, inicie a conexão do hub. Encadeie um método catch para registrar ou manipular erros.
connection.start().catch(err => console.error(err));
Proxies de hub
Os proxies de hub não são mais gerados automaticamente. Em vez disso, o nome do método é passado para a API de invocação como uma cadeia de caracteres.
Os proxies de hub não são mais gerados automaticamente. Em vez disso, o nome do método é passado para a API de invocação como uma cadeia de caracteres.
.NET e outros clientes
O pacote NuGet Microsoft.AspNetCore.SignalR.Client contém as bibliotecas de cliente .NET para ASP.NET Core SignalR.
Use o HubConnectionBuilder para criar e construir uma instância de uma conexão com um hub.
connection = new HubConnectionBuilder()
.WithUrl("url")
.Build();
Diferenças de escalabilidade
SignalR ASP.NET oferece suporte ao SQL Server e Redis. O ASP.NET Core SignalR dá suporte ao Serviço do Azure SignalR e ao Redis.
ASP.NET
- SignalR dimensionamento horizontal com o Barramento de Serviço do Azure
- SignalR scaleout com Redis
- SignalR expansão com o SQL Server