Bagikan melalui


Mode layanan di Azure SignalR Service

Mode layanan adalah konsep penting dalam Azure SignalR Service. SignalR Service saat ini mendukung tiga mode layanan: Default, Tanpa Server, dan Klasik. Sumber daya SignalR Service Anda bersifat berbeda di setiap mode. Dalam artikel ini, Anda mempelajari cara memilih mode layanan yang tepat berdasarkan skenario Anda.

Mengatur mode layanan

Anda diminta untuk menentukan mode layanan saat membuat sumber daya SignalR baru di portal Azure.

portal Azure – Pilih mode layanan saat membuat SignalR Service

Anda juga dapat mengubah mode layanan nanti di menu pengaturan.

Perbarui mode layanan

Gunakan az signalr create dan az signalr update untuk mengatur atau mengubah mode layanan dengan menggunakan Azure SignalR CLI.

Mode default

Seperti namanya, Mode default adalah mode layanan default untuk SignalR Service. Dalam mode Default, aplikasi Anda berfungsi sebagai aplikasi ASP.NET Core SignalR biasa atau ASP.NET SignalR (tidak digunakan lagi). Anda memiliki aplikasi server web yang menghosting hub, yang disebut server hub, dan klien memiliki komunikasi dupleks penuh dengan server hub. Perbedaan antara ASP.NET Core SignalR dan Azure SignalR Service adalah: Dengan ASP.NET Core SignalR, klien terhubung langsung ke server hub. Dengan Azure SignalR Service, klien dan server hub terhubung ke SignalR Service dan menggunakan layanan sebagai proksi. Diagram berikut menunjukkan struktur aplikasi umum dalam mode Default.

Struktur aplikasi dalam mode Default

Mode default biasanya merupakan pilihan yang tepat ketika Anda memiliki aplikasi SignalR yang ingin Anda gunakan dengan SignalR Service.

Perutean koneksi dalam mode Default

Dalam mode Default, ada koneksi WebSocket antara server hub dan SignalR Service yang disebut koneksi server. Koneksi ini digunakan untuk mentransfer pesan antara server dan klien. Ketika klien baru terhubung, SignalR Service merutekan klien ke satu server hub (asumsikan Anda memiliki lebih dari satu server) melalui koneksi server yang ada. Koneksi klien menempel ke server hub yang sama selama masa pakainya. Properti ini disebut sebagai kelekatan koneksi. Ketika klien mengirim pesan, mereka selalu masuk ke server hub yang sama. Dengan perilaku lengket, Anda dapat dengan aman mempertahankan beberapa status untuk koneksi individual di server hub Anda. Misalnya, jika Anda ingin melakukan streaming sesuatu antara server dan klien, Anda tidak perlu mempertimbangkan kasus di mana paket data masuk ke server yang berbeda.

Penting

Dalam mode Default, klien tidak dapat tersambung tanpa server hub tersambung ke layanan terlebih dahulu. Jika semua server hub Anda terputus karena gangguan jaringan atau reboot server, koneksi klien Anda akan mendapatkan kesalahan yang memberi tahu Anda tidak ada server yang terhubung. Anda bertanggung jawab untuk memastikan selalu ada setidaknya satu server hub yang terhubung ke layanan SignalR. Misalnya, Anda dapat merancang aplikasi anda dengan beberapa server hub, dan kemudian memastikan mereka semua tidak akan offline pada saat yang sama.

Model perutean default juga berarti ketika server hub offline, koneksi yang dirutekan ke server tersebut dihilangkan. Anda harus mengharapkan koneksi terputus saat server hub Anda offline untuk pemeliharaan, dan menangani koneksi ulang untuk meminimalkan efek pada aplikasi Anda.

Catatan

Dalam mode Default, Anda juga dapat menggunakan REST API, SDK manajemen, dan pengikatan fungsi untuk langsung mengirim pesan ke klien jika Anda tidak ingin melalui server hub. Dalam mode default koneksi klien masih ditangani oleh server hub dan titik akhir upstram tidak akan berfungsi dalam mode tersebut.

Mode Tanpa server

Tidak seperti mode Default, mode Tanpa Server tidak memerlukan server hub untuk berjalan, itulah sebabnya mode ini diberi nama "tanpa server." SignalR Service bertanggung jawab untuk mempertahankan koneksi klien. Tidak ada jaminan kelekatan koneksi dan permintaan HTTP mungkin kurang efisien daripada koneksi WebSockets.

Mode tanpa server berfungsi dengan Azure Functions untuk menyediakan kemampuan olahpesan real time. Klien bekerja dengan pengikatan SignalR Service untuk Azure Functions, yang disebut pengikatan fungsi, untuk mengirim pesan sebagai pengikatan output.

Karena tidak ada koneksi server, jika Anda mencoba menggunakan SDK server untuk membuat koneksi server, Anda mendapatkan kesalahan. SignalR Service menolak upaya koneksi server dalam mode Tanpa Server.

Mode tanpa server tidak memiliki kelekatan koneksi, tetapi Anda masih dapat memiliki pesan push aplikasi sisi server ke klien. Ada dua cara untuk mendorong pesan ke klien dalam mode Tanpa Server:

  • Menggunakan REST API untuk peristiwa pengiriman satu kali, atau
  • Gunakan koneksi WebSocket sehingga Anda dapat mengirim beberapa pesan secara lebih efisien. Koneksi WebSocket ini berbeda dari koneksi server.

Catatan

REST API dan WebSocket didukung dalam SDK manajemen layanan SignalR. Jika Anda menggunakan bahasa selain .NET, Anda juga dapat memanggil REST API secara manual mengikuti spesifikasi ini.

Aplikasi server Anda juga dapat menerima pesan dan peristiwa koneksi dari klien. SignalR Service mengirimkan pesan dan peristiwa koneksi ke titik akhir yang telah dikonfigurasi sebelumnya (disebut titik akhir upstream) menggunakan web hook. Titik akhir upstram hanya dapat dikonfigurasi dalam mode Tanpa Server. Untuk informasi selengkapnya, lihat Titik akhir upstram.

Diagram berikut menunjukkan cara kerja mode Tanpa Server.

Struktur aplikasi dalam mode Tanpa Server

Modus klasik

Catatan

Mode klasik terutama untuk kompatibilitas mundur untuk aplikasi yang dibuat sebelum mode Default dan Tanpa Server diperkenalkan. Jangan gunakan mode Klasik kecuali sebagai upaya terakhir. Gunakan Default atau Tanpa Server untuk aplikasi baru, berdasarkan skenario Anda. Anda harus mempertimbangkan untuk mendesain ulang aplikasi yang ada untuk menghilangkan kebutuhan akan mode Klasik.

Klasik adalah mode campuran mode Default dan Tanpa Server. Dalam mode Klasik, jenis koneksi diputuskan oleh apakah ada server hub yang tersambung saat koneksi klien dibuat. Jika ada server hub, koneksi klien dirutekan ke server hub. Jika server hub tidak tersedia, koneksi klien dibuat dalam mode tanpa server terbatas di mana pesan klien-ke-server tidak dapat dikirimkan ke server hub. Koneksi tanpa server mode klasik tidak mendukung beberapa fitur seperti titik akhir upstream.

Jika semua server hub Anda offline karena alasan apa pun, koneksi dibuat dalam mode Tanpa Server. Anda bertanggung jawab untuk memastikan bahwa setidaknya satu server hub selalu tersedia.

Pilih mode layanan yang tepat

Sekarang Anda harus memahami perbedaan antara mode layanan dan tahu bagaimana memilih di antara mereka. Seperti yang dibahas sebelumnya, mode Klasik tidak disarankan untuk aplikasi baru atau yang sudah ada. Berikut adalah beberapa tips lain yang dapat membantu Anda membuat pilihan yang tepat untuk mode layanan dan membantu Anda menghentikan mode Klasik untuk aplikasi yang ada.

  • Pilih Mode default jika Anda sudah terbiasa dengan cara kerja pustaka SignalR dan ingin berpindah dari SignalR yang dihost sendiri untuk menggunakan Azure SignalR Service. Mode default bekerja dengan cara yang sama persis seperti SignalR yang dihost sendiri, dan Anda dapat menggunakan model pemrograman yang sama di pustaka SignalR. SignalR Service bertindak sebagai proksi antara klien dan server hub.

  • Pilih mode Tanpa Server jika Anda membuat aplikasi baru dan tidak ingin mempertahankan koneksi server dan server hub. Mode tanpa server bekerja sama dengan Azure Functions sehingga Anda tidak perlu mempertahankan server apa pun sama sekali. Anda masih dapat memiliki komunikasi dupleks penuh dengan REST API, SDK manajemen, atau pengikatan fungsi + titik akhir upstream, tetapi model pemrograman berbeda dari pustaka SignalR.

  • Pilih Mode default jika Anda memiliki server hub untuk melayani koneksi klien dan aplikasi backend untuk langsung mendorong pesan ke klien. Perbedaan utama antara mode Default dan Tanpa Server adalah apakah Anda memiliki server hub dan bagaimana koneksi klien dirutekan. REST API/management SDK/pengikatan fungsi dapat digunakan di kedua mode.

  • Pertimbangkan untuk memisahkan kasus penggunaan ke dalam beberapa instans SignalR Service dengan mode layanan yang diatur sesuai dengan penggunaan, jika Anda benar-benar memiliki skenario campuran. Contoh skenario campuran yang memerlukan mode Klasik adalah tempat Anda memiliki dua hub berbeda pada sumber daya SignalR yang sama. Satu hub digunakan sebagai hub SignalR tradisional dan hub lainnya digunakan dengan Azure Functions. Contoh ini harus dibagi menjadi dua sumber daya, dengan satu instans dalam mode Default dan satu dalam mode Tanpa Server.

Langkah berikutnya

Lihat artikel berikut ini untuk mempelajari selengkapnya tentang cara menggunakan mode Default dan Tanpa Server.