SignalR Scaleout dengan SQL Server (SignalR 1.x)
oleh Patrick Fletcher
Peringatan
Dokumentasi ini bukan untuk versi terbaru SignalR. Lihatlah ASP.NET Core SignalR.
Dalam tutorial ini, Anda akan menggunakan SQL Server untuk mendistribusikan pesan di seluruh aplikasi SignalR yang disebarkan dalam dua instans IIS terpisah. Anda juga dapat menjalankan tutorial ini pada satu mesin uji, tetapi untuk mendapatkan efek penuh, Anda perlu menyebarkan aplikasi SignalR ke dua server atau lebih. Anda juga harus menginstal SQL Server di salah satu server, atau di server khusus terpisah. Opsi lain adalah menjalankan tutorial menggunakan VM di Azure.
Prasyarat
Microsoft SQL Server 2005 atau yang lebih baru. Backplane mendukung edisi desktop dan server SQL Server. Ini tidak mendukung SQL Server Compact Edition atau Azure SQL Database. (Jika aplikasi Anda dihosting di Azure, pertimbangkan backplane Bus Layanan sebagai gantinya.)
Gambaran Umum
Sebelum kita sampai ke tutorial terperinci, berikut adalah gambaran umum singkat tentang apa yang akan Anda lakukan.
Buat database kosong baru. Backplane akan membuat tabel yang diperlukan dalam database ini.
Tambahkan paket NuGet ini ke aplikasi Anda:
Membuat aplikasi SignalR.
Tambahkan kode berikut ke Global.asax untuk mengonfigurasi backplane:
protected void Application_Start() { string sqlConnectionString = "Connecton string to your SQL DB"; GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString); RouteTable.Routes.MapHubs(); // ... }
Mengonfigurasi Database
Tentukan apakah aplikasi akan menggunakan autentikasi Windows atau autentikasi SQL Server untuk mengakses database. Terlepas dari itu, pastikan pengguna database memiliki izin untuk masuk, membuat skema, dan membuat tabel.
Buat database baru untuk digunakan backplane. Anda dapat memberikan nama apa pun pada database. Anda tidak perlu membuat tabel apa pun di database; backplane akan membuat tabel yang diperlukan.
Aktifkan Service Broker
Disarankan untuk mengaktifkan Service Broker untuk database backplane. Service Broker menyediakan dukungan asli untuk olahpesan dan antrean dalam SQL Server, yang memungkinkan backplane menerima pembaruan dengan lebih efisien. (Namun, backplane juga berfungsi tanpa Service Broker.)
Untuk memeriksa apakah Service Broker diaktifkan, kueri kolom is_broker_enabled dalam tampilan katalog sys.databases .
SELECT [name], [service_broker_guid], [is_broker_enabled]
FROM [master].[sys].[databases]
Untuk mengaktifkan Service Broker, gunakan kueri SQL berikut:
ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER
Catatan
Jika kueri ini tampaknya mengalami kebuntuan, pastikan tidak ada aplikasi yang tersambung ke DB.
Jika Anda telah mengaktifkan pelacakan, jejak juga akan menunjukkan apakah Service Broker diaktifkan.
Membuat Aplikasi SignalR
Buat aplikasi SignalR dengan mengikuti salah satu tutorial berikut:
Selanjutnya, kita akan memodifikasi aplikasi obrolan untuk mendukung scaleout dengan SQL Server. Pertama, tambahkan paket SignalR.SqlServer NuGet ke proyek Anda. Di Visual Studio, dari menu Alat , pilih Manajer Paket NuGet, lalu pilih Konsol Manajer Paket. Di jendela Konsol Manajer Paket, masukkan perintah berikut:
Install-Package Microsoft.AspNet.SignalR.SqlServer
Selanjutnya, buka file Global.asax. Tambahkan kode berikut ke metode Application_Start :
protected void Application_Start()
{
string sqlConnectionString = "<add your SQL connection string here>";
GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
RouteTable.Routes.MapHubs();
}
Menyebarkan dan Menjalankan Aplikasi
Siapkan instans Windows Server Anda untuk menyebarkan aplikasi SignalR.
Tambahkan peran IIS. Sertakan fitur "Pengembangan Aplikasi", termasuk Protokol WebSocket.
Sertakan juga Layanan Manajemen (tercantum di bawah "Alat Manajemen").
Instal Web Deploy 3.0. Saat Anda menjalankan IIS Manager, IIS Manager akan meminta Anda untuk menginstal Microsoft Web Platform, atau Anda dapat mengunduh alat penginstal. Di Penginstal Platform, cari Web Deploy dan instal Web Deploy 3.0
Periksa apakah Layanan Manajemen Web sedang berjalan. Jika tidak, mulai layanan. (Jika Anda tidak melihat Layanan Manajemen Web dalam daftar layanan Windows, pastikan Anda menginstal Layanan Manajemen saat menambahkan peran IIS.)
Terakhir, buka port 8172 untuk TCP. Ini adalah port yang digunakan alat Web Deploy.
Sekarang Anda siap untuk menyebarkan proyek Visual Studio dari komputer pengembangan Anda ke server. Di Penjelajah Solusi, klik kanan solusi dan klik Terbitkan.
Untuk dokumentasi selengkapnya tentang penyebaran web, lihat Peta Konten Penyebaran Web untuk Visual Studio dan ASP.NET.
Jika Anda menyebarkan aplikasi ke dua server, Anda dapat membuka setiap instans di jendela browser terpisah dan melihat bahwa mereka masing-masing menerima pesan SignalR dari yang lain. (Tentu saja, di lingkungan produksi, kedua server akan duduk di belakang load balancer.)
Setelah menjalankan aplikasi, Anda dapat melihat bahwa SignalR telah secara otomatis membuat tabel dalam database:
SignalR mengelola tabel. Selama aplikasi Anda disebarkan, jangan hapus baris, ubah tabel, dan sebagainya.