Bagikan melalui


SignalR Scaleout dengan Azure Service Bus

oleh Patrick Fletcher

Peringatan

Dokumentasi ini bukan untuk versi terbaru SignalR. Lihatlah ASP.NET Core SignalR.

Dalam tutorial ini, Anda akan menyebarkan aplikasi SignalR ke Peran Web Windows Azure, menggunakan backplane Bus Layanan untuk mendistribusikan pesan ke setiap instans peran. (Anda juga dapat menggunakan backplane Bus Layanan dengan aplikasi web di Azure App Service.)

Diagram yang memperlihatkan panah dari Topik ke Peran Web ke komputer. Panah berlabel penerbitan dimulai di Peran Web dan masuk ke Topik.

Prasyarat:

Backplane bus layanan juga kompatibel dengan Service Bus untuk Windows Server, versi 1.1. Namun, ini tidak kompatibel dengan Service Bus versi 1.0 untuk Windows Server.

Harga

Backplane Azure Service Bus menggunakan topik untuk mengirim pesan. Untuk informasi harga terbaru, lihat Azure Service Bus. Pada saat penulisan ini, Anda dapat mengirim 1.000.000 pesan per bulan dengan harga kurang dari $1. Backplane mengirim pesan bus layanan untuk setiap pemanggilan metode hub SignalR. Ada juga beberapa pesan kontrol untuk koneksi, pemutusan sambungan, bergabung atau meninggalkan grup, dan sebagainya. Di sebagian besar aplikasi, sebagian besar lalu lintas pesan akan menjadi pemanggilan metode hub.

Gambaran Umum

Sebelum kita sampai ke tutorial terperinci, berikut adalah gambaran umum singkat tentang apa yang akan Anda lakukan.

  1. Gunakan portal Azure Windows untuk membuat namespace Bus Layanan baru.

  2. Tambahkan paket NuGet ini ke aplikasi Anda:

  3. Membuat aplikasi SignalR.

  4. Tambahkan kode berikut ke Startup.cs untuk mengonfigurasi backplane:

    public void Configuration(IAppBuilder app)
    {
        string connectionString = "Service Bus connection string";
        GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName");
    
        app.MapSignalR();
        // ...
    }
    

Kode ini mengonfigurasi backplane dengan nilai default untuk TopicCount dan MaxQueueLength. Untuk informasi tentang mengubah nilai-nilai ini, lihat Performa SignalR: Metrik Scaleout.

Untuk setiap aplikasi, pilih nilai yang berbeda untuk "YourAppName". Jangan gunakan nilai yang sama di beberapa aplikasi.

Membuat Layanan Azure

Buat Cloud Service, seperti yang dijelaskan dalam Cara Membuat dan Menyebarkan Layanan Cloud. Ikuti langkah-langkah di bagian "Cara: Membuat layanan awan menggunakan Buat Cepat". Untuk tutorial ini, Anda tidak perlu mengunggah sertifikat.

Cuplikan layar opsi Cloud Service yang dilingkari dengan warna merah.

Buat namespace Service Bus baru, seperti yang dijelaskan dalam Cara Menggunakan Topik/Langganan Bus Layanan. Ikuti langkah-langkah di bagian "Buat Namespace Layanan".

Cuplikan layar jendela berjudul tambahkan namespace baru dengan opsi di bawah ini.

Catatan

Pastikan untuk memilih wilayah yang sama untuk layanan cloud dan namespace Bus Layanan.

Membuat Proyek Visual Studio

Mulai Visual Studio. Dari menu File , klik Proyek Baru.

Dalam kotak dialog Proyek Baru , perluas Visual C#. Di bawah Templat yang Diinstal, pilih Cloud lalu pilih Windows Azure Cloud Service. Pertahankan .NET Framework default 4.5. Beri nama aplikasi ChatService dan klik OK.

Cuplikan layar yang memperlihatkan kotak dialog Proyek Baru. Cloud dipilih di folder Share Point Office. Layanan Obrolan berada di bidang Nama.

Dalam dialog Windows Azure Cloud Service Baru , pilih Peran Web ASP.NET. Klik tombol panah kanan (>) untuk menambahkan peran ke solusi Anda.

Arahkan mouse ke peran baru, sehingga ikon pensil terlihat. Klik ikon ini untuk mengganti nama peran. Beri nama peran "SignalRChat" dan klik OK.

Cuplikan layar yang memperlihatkan kotak dialog Windows Azure Cloud Service Baru. Signal R Chat ditik di atas A S P dot NET Web Role.

Dalam dialog Proyek ASP.NET Baru , pilih MVC, dan klik OK.

Cuplikan layar yang memperlihatkan kotak dialog Proyek NET titik A S P Baru. M V C adalah templat yang dipilih.

Wizard proyek membuat dua proyek:

  • ChatService: Proyek ini adalah aplikasi Windows Azure. Ini mendefinisikan peran Azure dan opsi konfigurasi lainnya.
  • SignalRChat: Proyek ini adalah proyek MVC 5 ASP.NET Anda.

Membuat Aplikasi Obrolan SignalR

Untuk membuat aplikasi obrolan, ikuti langkah-langkah dalam tutorial Memulai SignalR dan MVC 5.

Gunakan NuGet untuk menginstal pustaka yang diperlukan. Dari menu Alat , pilih Manajer Paket NuGet, lalu pilih Konsol Manajer Paket. Di jendela Konsol Manajer Paket , masukkan perintah berikut:

Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus

-ProjectName Gunakan opsi untuk menginstal paket ke proyek MVC ASP.NET, bukan proyek Windows Azure.

Mengonfigurasi Backplane

Dalam file Startup.cs aplikasi Anda, tambahkan kode berikut:

public void Configuration(IAppBuilder app)
{
    // Any connection or hub wire up and configuration should go here
    string connectionString = "";
    GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");  

    app.MapSignalR();
}

Sekarang Anda perlu mendapatkan string koneksi bus layanan Anda. Di portal Azure, pilih namespace bus layanan yang Anda buat dan klik ikon Kunci Akses.

Cuplikan layar yang memperlihatkan tanda plus berlabel Buat, kunci berlabel Kunci Akses, dan tempat sampah dapat berlabel Hapus.

Salin string koneksi ke clipboard, lalu tempelkan ke variabel connectionString .

Cuplikan layar yang memperlihatkan kotak dialog Sambungkan Kunci Akses ke namespace Anda.

string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";

Sebarkan ke Azure

Di Penjelajah Solusi, perluas folder Peran di dalam proyek ChatService.

Cuplikan layar yang memperlihatkan folder terbuka berjudul Peran. Signal R Chat dipilih.

Klik kanan peran SignalRChat dan pilih Properti. Pilih tab Konfigurasi . Di bawah Instans pilih 2. Anda juga dapat mengatur ukuran VM ke Ekstra Kecil.

Cuplikan layar yang memperlihatkan Instans. Jumlah Instans diatur ke 2 dan Ukuran V M diatur ke Ekstra kecil.

Simpan perubahan.

Di Penjelajah Solusi, klik kanan proyek ChatService. Pilih Terbitkan.

Cuplikan layar yang memperlihatkan Penjelajah Solusi. Publikasikan dipilih di menu konteks Layanan Obrolan.

Jika ini adalah pertama kalinya Anda menerbitkan ke Windows Azure, Anda harus mengunduh kredensial Anda. Di wizard Terbitkan , klik "Masuk untuk mengunduh kredensial". Ini akan meminta Anda untuk masuk ke Windows portal Azure dan mengunduh file pengaturan penerbitan.

Cuplikan layar yang memperlihatkan kotak dialog Terbitkan Aplikasi Windows Azure. Masuk untuk mengunduh kredensial dilingkari dengan warna merah.

Klik Impor dan pilih file pengaturan penerbitan yang Anda unduh.

Klik Berikutnya. Dalam dialog Terbitkan Pengaturan , di bawah Layanan Awan, pilih layanan awan yang Anda buat sebelumnya.

Cuplikan layar yang memperlihatkan halaman Pengaturan Penerbitan Windows Azure.

Klik Terbitkan. Dibutuhkan beberapa menit untuk menyebarkan aplikasi dan memulai VM.

Sekarang ketika Anda menjalankan aplikasi obrolan, instans peran berkomunikasi melalui Azure Service Bus, menggunakan topik Bus Layanan. Topik adalah antrean pesan yang memungkinkan beberapa pelanggan.

Backplane secara otomatis membuat topik dan langganan. Untuk melihat langganan dan aktivitas pesan, buka portal Azure, pilih namespace Service Bus, dan klik "Topik".

Cuplikan layar menu navigasi dengan topik dipilih.

Dibutuhkan beberapa menit agar aktivitas pesan muncul di dasbor.

Cuplikan layar yang memperlihatkan grafik aktivitas langganan dan pesan pada garis waktu.

SignalR mengelola masa pakai topik. Selama aplikasi Anda disebarkan, jangan mencoba menghapus topik secara manual atau mengubah pengaturan pada topik.

Pemecahan Masalah

System.InvalidOperationException "Satu-satunya IsolationLevel yang didukung adalah 'IsolationLevel.Serializable'."

Kesalahan ini dapat terjadi jika tingkat transaksi untuk operasi diatur ke sesuatu selain Serializable. Verifikasi bahwa tidak ada operasi yang dilakukan dengan tingkat transaksi lainnya.