SignalR Scaleout dengan Azure Service Bus (SignalR 1.x)
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.
Prasyarat:
- Akun Windows Azure.
- Windows Azure SDK.
- Visual Studio 2012.
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.
Gunakan portal Azure Windows untuk membuat namespace Bus Layanan baru.
Tambahkan paket NuGet ini ke aplikasi Anda:
Membuat aplikasi SignalR.
Tambahkan kode berikut ke Global.asax untuk mengonfigurasi backplane:
protected void Application_Start() { string connectionString = "Service Bus connection string"; GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName"); RouteTable.Routes.MapHubs(); // ... }
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.
Buat namespace Service Bus baru, seperti yang dijelaskan dalam Cara Menggunakan Topik/Langganan Bus Layanan. Ikuti langkah-langkah di bagian "Buat Namespace Layanan".
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.
Dalam dialog Windows Azure Cloud Service Baru , pilih ASP.NET Peran Web MVC 4. 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.
Di wizard Proyek ASP.NET Baru MVC 4 , pilih Aplikasi Internet. Klik OK. 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 4 ASP.NET Anda.
Membuat Aplikasi Obrolan SignalR
Untuk membuat aplikasi obrolan, ikuti langkah-langkah dalam tutorial Memulai SignalR dan MVC 4.
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 Global.asax aplikasi Anda, tambahkan kode berikut:
protected void Application_Start()
{
string connectionString = "";
GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");
RouteTable.Routes.MapHubs();
}
Sekarang Anda perlu mendapatkan string koneksi bus layanan Anda. Di portal Azure, pilih namespace bus layanan yang Anda buat dan klik ikon Kunci Akses.
Salin string koneksi ke clipboard, lalu tempelkan ke variabel connectionString .
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.
Klik kanan peran SignalRChat dan pilih Properti. Pilih tab Konfigurasi . Di bawah Instans pilih 2. Anda juga dapat mengatur ukuran VM ke Ekstra Kecil.
Simpan perubahan.
Di Penjelajah Solusi, klik kanan proyek ChatService. Pilih Terbitkan.
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.
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.
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".
Dibutuhkan beberapa menit agar aktivitas pesan muncul di dasbor.
SignalR mengelola masa pakai topik. Selama aplikasi Anda disebarkan, jangan mencoba menghapus topik secara manual atau mengubah pengaturan pada topik.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk