Aracılığıyla paylaş


ASP.NET ile ASP.NET SignalR Core arasındaki farklar SignalR

ASP.NET Core SignalR , ASP.NET SignalRiçin istemciler veya sunucularla uyumlu değildir. Bu makalede, ASP.NET Core'da kaldırılan veya değiştirilen özellikler ayrıntılı olarak anlatılır SignalR.

Sürümü tanımlama SignalR

ASP.NET SignalR ASP.NET Core SignalR
Sunucu NuGet paketi Microsoft.AspNet.SignalR Yok. Microsoft.AspNetCore.App paylaşılan çerçevesine dahildir.
İstemci NuGet paketleri Microsoft.AspNet.SignalR. Istemci
Microsoft.AspNet.SignalR.JS
Microsoft.AspNetCore.SignalR. Istemci
JavaScript istemcisi npm paketi signalr @microsoft/signalr
Java istemcisi GitHub Deposu (kullanım dışı) Maven package com.microsoft.signalr
Sunucu uygulaması türü ASP.NET (System.Web) veya OWIN Kendi Kendine Konağı ASP.NET Core
Desteklenen sunucu platformları .NET Framework 4.5 veya üzeri .NET Core 3.0 veya üzeri
ASP.NET SignalR ASP.NET Core SignalR
Sunucu NuGet paketi Microsoft.AspNet.SignalR Microsoft.AspNetCore.App (.NET Core)
Microsoft.AspNetCore.SignalR (.NET Framework)
İstemci NuGet paketleri Microsoft.AspNet.SignalR. Istemci
Microsoft.AspNet.SignalR.JS
Microsoft.AspNetCore.SignalR. Istemci
JavaScript istemcisi npm paketi signalr @aspnet/signalr
Java istemcisi GitHub Deposu (kullanım dışı) Maven package com.microsoft.signalr
Sunucu uygulaması türü ASP.NET (System.Web) veya OWIN Kendi Kendine Konağı ASP.NET Core
Desteklenen sunucu platformları .NET Framework 4.5 veya üzeri .NET Framework 4.6.1 veya üzeri
.NET Core 2.1 veya üzeri

Özellik farklılıkları

Otomatik yeniden bağlantılar

ASP.NET SignalRiçinde:

  • Varsayılan olarak, SignalR bağlantı bırakılırsa sunucuya yeniden bağlanmayı dener.

ASP.NET Core'da SignalR:

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();

ASP.NET Core 3.0'a başlamadan önce otomatik SignalR yeniden bağlantıları desteklemez. İstemcinin bağlantısı kesilirse, kullanıcının yeniden bağlanmak için açıkça yeni bir bağlantı başlatması gerekir. ASP.NET SignalRiçinde, SignalR bağlantı bırakılırsa sunucuya yeniden bağlanmayı dener.

Protokol desteği

ASP.NET CoreSignalR, AÇIN'ı ve MessagePack'i temel alan yeni bir ikili protokolü desteklerJS. Ayrıca özel protokoller oluşturulabilir.

Taşımalar

Forever Frame aktarımı ASP.NET Core'da SignalRdesteklenmez.

Sunucudaki farklar

ASP.NET Core SignalR sunucu tarafı kitaplıkları, hem hem de Razor MVC projeleri için ASP.NET Core Web Uygulaması şablonunda kullanılan Microsoft.AspNetCore.App eklenir.

ASP.NET Core SignalR , ASP.NET Core ara yazılımıdır. içinde çağrılarak AddSignalRStartup.ConfigureServicesyapılandırılmalıdır.

services.AddSignalR()

Yönlendirmeyi yapılandırmak için, yolları yöntemindeki yöntem çağrısının UseEndpoints içindeki hub'lara eşleyin Startup.Configure .

app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<ChatHub>("/hub");
});

Yönlendirmeyi yapılandırmak için, yolları yöntemindeki yöntem çağrısının UseSignalR içindeki hub'lara eşleyin Startup.Configure .

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

Yapışkan oturumlar

ASP.NET SignalR için ölçek genişletme modeli istemcilerin yeniden bağlanmasına ve grup içindeki herhangi bir sunucuya ileti göndermesine olanak tanır. ASP.NET Core'da SignalR, istemcinin bağlantı süresi boyunca aynı sunucuyla etkileşim kurması gerekir. Redis kullanarak ölçeği genişletmek için yapışkan oturumların gerekli olduğu anlamına gelir. Azure SignalR Hizmeti'ni kullanarak ölçeği genişletmek için, hizmet istemcilerle bağlantıları işlediğinden yapışkan oturumlar gerekli değildir.

Bağlantı başına tek hub

ASP.NET Core'da SignalRbağlantı modeli basitleştirildi. Bağlan, birden çok hub'a erişimi paylaşmak için kullanılan tek bir bağlantı yerine doğrudan tek bir hub'a yapılır.

Akışlar

ASP.NET Core SignalR artık hub'dan istemciye akış verilerini destekliyor.

State

İstemciler ile merkez (genellikle olarak adlandırılır HubState) arasında rastgele durum geçirme özelliği ve ilerleme iletileri desteği kaldırıldı. Şu anda merkez proxy'lerinin bir karşılığı yoktur.

Kalıcı Bağlan ion kaldırma

ASP.NET Core'da SignalRPersistent Bağlan ion sınıfı kaldırıldı.

GlobalHost

ASP.NET Core, çerçevede yerleşik bağımlılık ekleme (DI) özelliklerine sahiptir. Hizmetler HubContext'e erişmek için DI kullanabilir. GlobalHost almak HubContext için ASP.NET'de SignalR kullanılan nesne ASP.NET Core'da SignalRyok.

HubPipeline

ASP.NET Core SignalR modül desteğine sahip HubPipeline değildir.

İstemcideki farklar

TypeScript

ASP.NET Core SignalR istemcisi TypeScript'te yazılır. JavaScript istemcisini kullanırken JavaScript veya TypeScript ile yazabilirsiniz.

JavaScript istemcisi npm'de barındırılır

ASP.NET sürümlerde JavaScript istemcisi Visual Studio'daki bir NuGet paketi aracılığıyla alınıyordu. ASP.NET Core sürümlerinde @microsoft/signalr npm paketi JavaScript kitaplıklarını içerir. Bu paket ASP.NET Core Web Uygulaması şablonuna dahil değildir. npm paketini almak ve yüklemek @microsoft/signalr için npm kullanın.

npm init -y
npm install @microsoft/signalr

ASP.NET sürümlerde JavaScript istemcisi Visual Studio'daki bir NuGet paketi aracılığıyla alınıyordu. ASP.NET Core sürümlerinde @aspnet/signalr npm paketi JavaScript kitaplıklarını içerir. Bu paket ASP.NET Core Web Uygulaması şablonuna dahil değildir. npm paketini almak ve yüklemek @aspnet/signalr için npm kullanın.

npm init -y
npm install @aspnet/signalr

jQuery

jQuery bağımlılığı kaldırıldı, ancak projeler jQuery'yi kullanmaya devam edebilir.

Internet Explorer desteği

ASP.NET Core SignalR , Microsoft Internet Explorer'ı desteklemezken, ASP.NET SignalR Microsoft Internet Explorer 8 veya üstünü destekler. Daha fazla bilgi için bkz . ASP.NET Core SignalR destekli platformlar.

JavaScript istemci yöntemi söz dizimi

JavaScript söz dizimi, ASP.NET sürümünden SignalRdeğiştirilmiştir. nesnesini kullanmak $connection yerine Hub Bağlan ionBuilder API'sini kullanarak bir bağlantı oluşturun.

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

Hub'ın çağırabileceği istemci yöntemlerini belirtmek için on yöntemini kullanın.

JavaScript söz dizimi, ASP.NET sürümünden SignalRdeğiştirilmiştir. nesnesini kullanmak $connection yerine Hub Bağlan ionBuilder API'sini kullanarak bir bağlantı oluşturun.

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

Hub'ın çağırabileceği istemci yöntemlerini belirtmek için on yöntemini kullanın.

connection.on("ReceiveMessage", (user, message) => {
    const msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    const encodedMsg = `${user} says ${msg}`;
    console.log(encodedMsg);
});

İstemci yöntemini oluşturduktan sonra hub bağlantısını başlatın. Hataları günlüğe kaydetmek veya işlemek için bir catch yöntemini zincirleyin.

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

Merkez proxy'ler

Hub proxy'leri artık otomatik olarak oluşturulmaz. Bunun yerine, yöntem adı çağırma API'sine dize olarak geçirilir.

Hub proxy'leri artık otomatik olarak oluşturulmaz. Bunun yerine, yöntem adı çağırma API'sine dize olarak geçirilir.

.NET ve diğer istemciler

Microsoft.AspNetCore.SignalR. İstemci NuGet paketi, ASP.NET Core SignalRiçin .NET istemci kitaplıklarını içerir.

Bir hub'a bağlantı örneği oluşturmak ve oluşturmak için öğesini HubConnectionBuilder kullanın.

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

Ölçek genişletme farkları

SignalR ASP.NET SQL Server ve Redis'i destekler. ASP.NET Core SignalR , Azure SignalR Hizmeti ve Redis'i destekler.

ASP.NET

ASP.NET Core

Ek kaynaklar