Bagikan melalui


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.

Diagram S Q L Server dan hubungannya antara V M, komputer, pengiriman kueri, dan pembaruan ke Server S Q L.

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.

  1. Buat database kosong baru. Backplane akan membuat tabel yang diperlukan dalam database ini.

  2. Tambahkan paket NuGet ini ke aplikasi Anda:

  3. Membuat aplikasi SignalR.

  4. 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.

Cuplikan layar jendela Object Explorer dengan folder Database disorot, memperlihatkan sub-folder yang terkandung.

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]

Cuplikan layar tab S Q L Query 1 dot S Q L yang ditampilkan di Service Broker, memperlihatkan tab Hasil dan Pesan.

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.

Cuplikan layar Wizard Tambahkan Peran dan Fitur dengan opsi Peran Server dan Protokol Soket Web disorot.

Sertakan juga Layanan Manajemen (tercantum di bawah "Alat Manajemen").

Cuplikan layar Wizard Tambahkan Peran dan Fitur dengan Peran Server dan opsi Skrip dan Alat Manajemen I I S disorot.

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

Cuplikan layar Penginstal Platform Web 4 poin 5 yang menampilkan hasil pencarian dengan opsi Web Deploy 3 poin 0 disorot.

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.)

Cuplikan layar jendela browser Internet Explorer memperlihatkan layar Indeks yang menampilkan pesan Signal R.

Setelah menjalankan aplikasi, Anda dapat melihat bahwa SignalR telah secara otomatis membuat tabel dalam database:

Cuplikan layar Object Explorer dengan server S Q L tanda hubung MIKE disorot dan memperlihatkan folder dan server yang terkandung.

SignalR mengelola tabel. Selama aplikasi Anda disebarkan, jangan hapus baris, ubah tabel, dan sebagainya.