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:
- Otomatik yeniden bağlantılar hem .NET istemcisi hem de JavaScript istemcisiylekabul edilir:
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.ConfigureServices
yapı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, "&").replace(/</g, "<").replace(/>/g, ">");
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
- SignalR Azure Service Bus ile ölçeği genişletme
- SignalR Redis ile ölçeği genişletme
- SignalR SQL Server ile ölçeği genişletme
ASP.NET Core
Ek kaynaklar
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin