Perbedaan antara ASP.NET SignalR dan ASP.NET Core SignalR
ASP.NET Core SignalR tidak kompatibel dengan klien atau server untuk ASP.NET SignalR. Artikel ini merinci fitur yang telah dihapus atau diubah di ASP.NET Core SignalR.
Cara mengidentifikasi SignalR versi
ASP.NET SignalR | ASP.NET Core SignalR | |
---|---|---|
Paket NuGet Server | Microsoft.AspNet.SignalR | Tidak ada. Disertakan dalam kerangka kerja bersama Microsoft.AspNetCore.App . |
Paket NuGet Klien | Microsoft.AspNet.SignalR. Klien Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klien |
Paket npm klien JavaScript | signalr | @microsoft/signalr |
Klien Java | Repositori GitHub (tidak digunakan lagi) | Paket Maven com.microsoft.signalr |
Jenis aplikasi server | ASP.NET (System.Web) atau OWIN Self-Host | Inti ASP.NET |
Platform server yang didukung | .NET Framework 4.5 atau yang lebih baru | .NET Core 3.0 atau yang lebih baru |
ASP.NET SignalR | ASP.NET Core SignalR | |
---|---|---|
Paket NuGet Server | Microsoft.AspNet.SignalR | Microsoft.AspNetCore.App (.NET Core) Microsoft.AspNetCore.SignalR (.NET Framework) |
Paket NuGet Klien | Microsoft.AspNet.SignalR. Klien Microsoft.AspNet.SignalR.JS |
Microsoft.AspNetCore.SignalR. Klien |
Paket npm klien JavaScript | signalr | @aspnet/signalr |
Klien Java | Repositori GitHub (tidak digunakan lagi) | Paket Maven com.microsoft.signalr |
Jenis aplikasi server | ASP.NET (System.Web) atau OWIN Self-Host | Inti ASP.NET |
Platform server yang didukung | .NET Framework 4.5 atau yang lebih baru | .NET Framework 4.6.1 atau yang lebih baru .NET Core 2.1 atau yang terbaru |
Perbedaan fitur
Koneksi ulang otomatis
Dalam ASP.NET SignalR:
- Secara default, SignalR upaya untuk menyambungkan kembali ke server jika koneksi terputus.
Dalam ASP.NET Core 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();
Sebelum ASP.NET Core 3.0, SignalR tidak mendukung koneksi ulang otomatis. Jika klien terputus, pengguna harus secara eksplisit memulai koneksi baru untuk menyambungkan kembali. Dalam ASP.NET SignalR, SignalR upaya untuk menyambungkan kembali ke server jika koneksi terputus.
Dukungan protokol
ASP.NET Core SignalR mendukung JSON, serta protokol biner baru berdasarkan MessagePack. Selain itu, protokol kustom dapat dibuat.
Transportasi
Transportasi Forever Frame tidak didukung di ASP.NET Core SignalR.
Perbedaan pada server
Pustaka sisi server ASP.NET Core SignalR disertakan dalam Microsoft.AspNetCore.App, yang digunakan dalam templat ASP.NET Core Web Application untuk Razor proyek MVC dan .
ASP.NET Core SignalR adalah middleware Core ASP.NET. Ini harus dikonfigurasi dengan memanggil AddSignalR di Startup.ConfigureServices
.
services.AddSignalR()
Untuk mengonfigurasi perutean, petakan rute ke hub di dalam UseEndpoints panggilan metode dalam Startup.Configure
metode .
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/hub");
});
Untuk mengonfigurasi perutean, petakan rute ke hub di dalam UseSignalR panggilan metode dalam Startup.Configure
metode .
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/hub");
});
Sesi lengket
Model penskalaan untuk ASP.NET SignalR memungkinkan klien untuk menyambungkan kembali dan mengirim pesan ke server apa pun di farm. Di ASP.NET Core SignalR, klien harus berinteraksi dengan server yang sama selama durasi koneksi. Untuk peluasan skala menggunakan Redis, itu berarti sesi lengket diperlukan. Untuk penskalaan menggunakan Azure SignalR Service, sesi lengket tidak diperlukan karena layanan menangani koneksi ke klien.
Hub tunggal per koneksi
Di ASP.NET Core SignalR, model koneksi telah disederhanakan. Koneksi dibuat langsung ke satu hub, bukan satu koneksi yang digunakan untuk berbagi akses ke beberapa hub.
Streaming
ASP.NET Core SignalR sekarang mendukung data streaming dari hub ke klien.
Provinsi
Kemampuan untuk melewati status arbitrer antara klien dan hub (sering disebut HubState
) telah dihapus, serta dukungan untuk pesan kemajuan. Tidak ada mitra proksi hub saat ini.
Penghapusan PersistentConnection
Di ASP.NET Core SignalR, kelas PersistentConnection telah dihapus.
GlobalHost
ASP.NET Core memiliki injeksi dependensi (DI) yang terpasang dalam kerangka kerja. Layanan dapat menggunakan DI untuk mengakses HubContext. Objek GlobalHost
yang digunakan dalam ASP.NET SignalR untuk mendapatkan HubContext
tidak ada di ASP.NET Core SignalR.
HubPipeline
ASP.NET Core SignalR tidak memiliki dukungan untuk HubPipeline
modul.
Perbedaan pada klien
TypeScript
Klien ASP.NET Core SignalR ditulis dalam TypeScript. Anda dapat menulis di JavaScript atau TypeScript saat menggunakan klien JavaScript.
Klien JavaScript dihosting di npm
Dalam versi ASP.NET, klien JavaScript diperoleh melalui paket NuGet di Visual Studio. Dalam versi ASP.NET Core, @microsoft/signalr
paket npm berisi pustaka JavaScript. Paket ini tidak disertakan dalam templat ASP.NET Core Web Application . Gunakan npm untuk mendapatkan dan menginstal @microsoft/signalr
paket npm.
npm init -y
npm install @microsoft/signalr
Dalam versi ASP.NET, klien JavaScript diperoleh melalui paket NuGet di Visual Studio. Dalam versi ASP.NET Core, @aspnet/signalr
paket npm berisi pustaka JavaScript. Paket ini tidak disertakan dalam templat ASP.NET Core Web Application . Gunakan npm untuk mendapatkan dan menginstal @aspnet/signalr
paket npm.
npm init -y
npm install @aspnet/signalr
jQuery
Dependensi pada jQuery telah dihapus, namun proyek masih dapat menggunakan jQuery.
Dukungan Internet Explorer
ASP.NET Core SignalR tidak mendukung Microsoft Internet Explorer, sedangkan ASP.NET SignalR mendukung Microsoft Internet Explorer 8 atau yang lebih baru. Untuk informasi selengkapnya, lihat platform yang didukung ASP.NET CoreSignalR.
Sintaks metode klien JavaScript
Sintaks JavaScript telah berubah dari versi ASP.NET .SignalR Daripada menggunakan $connection
objek, buat koneksi menggunakan HUBConnectionBuilder API.
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Gunakan metode on untuk menentukan metode klien yang dapat dipanggil hub.
Sintaks JavaScript telah berubah dari versi ASP.NET .SignalR Daripada menggunakan $connection
objek, buat koneksi menggunakan HUBConnectionBuilder API.
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.build();
Gunakan metode on untuk menentukan metode klien yang dapat dipanggil hub.
connection.on("ReceiveMessage", (user, message) => {
const msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
const encodedMsg = `${user} says ${msg}`;
console.log(encodedMsg);
});
Setelah membuat metode klien, mulai koneksi hub. Rantai metode tangkapan untuk mencatat atau menangani kesalahan.
connection.start().catch(err => console.error(err));
Proksi hub
Proksi hub tidak lagi dibuat secara otomatis. Sebagai gantinya, nama metode diteruskan ke API pemanggilan sebagai string.
Proksi hub tidak lagi dibuat secara otomatis. Sebagai gantinya, nama metode diteruskan ke API pemanggilan sebagai string.
.NET dan klien lainnya
Microsoft.AspNetCore.SignalR. Paket NuGet klien berisi pustaka klien .NET untuk ASP.NET Core SignalR.
HubConnectionBuilder Gunakan untuk membuat dan membangun instans koneksi ke hub.
connection = new HubConnectionBuilder()
.WithUrl("url")
.Build();
Perbedaan skala
SignalR ASP.NET mendukung SQL Server dan Redis. ASP.NET Core SignalR mendukung Azure SignalR Service dan Redis.
ASP.NET
- SignalRscaleout dengan Azure Bus Layanan
- SignalR scaleout dengan Redis
- SignalR scaleout dengan SQL Server
Inti ASP.NET
Sumber Daya Tambahan:
ASP.NET Core