Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 20007|Jawab: 1

[ASP.NET] Pengantar dan pengantar SignalR

[Salin tautan]
Diposting pada 05/07/2017 10.21.40 | | | |
1. Apa itu SignalR:        
ASP.NET SignalR adalah perpustakaan kelas yang disediakan untuk menyederhanakan proses penambahan konten web langsung ke aplikasi oleh pengembang pengembangan. Fungsionalitas web real-time mengacu pada memungkinkan kode server untuk secara aktif mendorong konten ke klien kapan saja, daripada meminta server menunggu permintaan dari klien (sebelum mengembalikan konten).
Semua jenis fungsionalitas web "langsung" dapat ditambahkan ke aplikasi ASP.NET Anda menggunakan SignalR. Contoh yang paling umum digunakan adalah ruang obrolan, tetapi kita dapat melakukan lebih dari itu. Pertimbangkan situasi berikut: pengguna perlu terus-menerus menyegarkan halaman web untuk melihat data terbaru; Atau ambil (dan tampilkan) data baru di halaman dengan menerapkan polling panjang, maka Anda dapat mempertimbangkan untuk menggunakan SignalR untuk melakukannya. Misalnya: dasbor dan aplikasi pemantauan; Aplikasi kolaboratif (misalnya, beberapa orang mengedit dokumen secara bersamaan); Pembaruan kemajuan pekerjaan dan formulir presentasi waktu nyata, dll.
SignalR juga cocok untuk jenis aplikasi web yang lebih baru yang memerlukan pembaruan frekuensi tinggi dari server, seperti game real-time. Berikut adalah contoh yang bagus: ShoorR.
SignalR menyediakan API sederhana bagi pengguna untuk membuat panggilan prosedur jarak jauh (RPC) server-ke-klien yang dapat dengan mudah diakses dari sisi server. Kode bersih. SignalR juga mencakup koneksi (misalnya, peristiwa koneksi dan pemutusan) dan pengelompokan koneksi.

SignalR dapat mengelola koneksi secara otomatis. Dan memungkinkan Anda mengirim pesan siaran ke semua klien yang terhubung, seperti ruang obrolan. Tentu saja, selain pengiriman massal, Anda juga dapat mengirim pesan ke klien tertentu. Koneksi antara klien dan server persisten, tidak seperti protokol HTTP tradisional, yang mengharuskan membangun kembali koneksi untuk setiap komunikasi.
SignalR mendukung fitur "server push", di mana kode server dapat memanggil kode klien di browser dengan menggunakan panggilan prosedur jarak jauh (RPC) alih-alih permintaan yang saat ini umum digunakan di web - model pemrosesan yang sesuai.
Aplikasi SignalR dapat diperluas ke ribuan klien menggunakan Service Bus, SQL SERVER, atau Redis.
SignalR bersifat open-source dan dapat diakses melalui GitHub.

2. SignalR dan WebSocket        

ignalR menggunakan metode transportasi WebSocket - jika memungkinkan. Dan secara otomatis beralih ke metode transportasi lama (misalnya koneksi panjang HTTP). Anda tentu dapat menulis aplikasi Anda secara langsung dengan WebSockets, tetapi menggunakan SignalR berarti Anda akan memiliki lebih banyak fungsionalitas ekstra tanpa harus menemukan kembali roda. Yang terpenting, Anda dapat fokus pada implementasi bisnis tanpa berpikir untuk membuat kode yang kompatibel secara terpisah untuk klien lama. SignalR juga memungkinkan Anda untuk menghindari keharusan khawatir tentang pembaruan WebSocket, karena SignalR akan terus diperbarui untuk mendukung perubahan metode transportasi yang mendasarinya untuk menyediakan antarmuka akses yang konsisten untuk aplikasi di berbagai versi WebSockets.
Tentu saja, Anda dapat membuat solusi yang hanya menggunakan transportasi WebSocket, dan SignalR menyediakan semua fitur yang mungkin Anda perlukan untuk menulis kode Anda sendiri, seperti kembali ke metode transportasi lain dan memodifikasi aplikasi Anda untuk implementasi WebSocket yang lebih baru.

3. Transportasi dan pengembalian      

SignalR adalah abstraksi dari teknologi transportasi yang diperlukan untuk mengimplementasikan fungsi real-time antara klien dan server. SignalR pertama-tama memulai koneksi dengan HTTP dan memeriksa apakah WebSocket tersedia - jika yakin, tingkatkan ke koneksi WebSocket. WebSocket adalah metode transmisi yang paling ideal untuk SignalR karena menggunakan memori server yang paling efisien, memiliki latensi terendah dan fungsi dasar yang komprehensif (seperti komunikasi full-duplex antara klien dan server), tetapi juga memiliki persyaratan yang paling ketat: server harus menggunakan sistem operasi Windows Server 2012 atau Windows 8, dan pada saat yang sama. .NET framework versi 4.5 dan yang lebih baru. Jika persyaratan ini tidak terpenuhi, SignalR akan mencoba menggunakan metode transmisi alternatif untuk terhubung.

4. Pengiriman HTML5         

Metode transportasi yang digunakan tergantung pada apakah browser klien mendukung HTML5, jika tidak, metode transportasi lama akan digunakan.
          WebSocket (jika server dan browser mendukung WebSocket). WebSocket adalah satu-satunya cara untuk membuat koneksi dua arah yang benar dan tahan lama di sisi klien dan server. Tentu saja, WebSocket juga memiliki persyaratan yang paling ketat: hanya didukung di versi terbaru IE, Chrome, dan FF, dan hanya sebagian diterapkan di browser lain seperti Opera dan Safari.
Server mengirim peristiwa, juga dikenal sebagai EventSource (jika browser mendukung peristiwa pengiriman server, pada dasarnya semua browser kecuali IE mendukung fitur ini).

5. Transmisi komet

Jenis transportasi berikut didasarkan pada model aplikasi web Comet, di mana browser atau klien akan mempertahankan permintaan koneksi HTTP yang panjang, dan server dapat mendorong data ke klien tanpa permintaan eksplisit dari klien.
Forever Frame (khusus IE) Forever Frame akan membuat IFrame tersembunyi yang mengirimkan permintaan ke server yang tidak akan diselesaikan. Server kemudian terus mengirimkan skrip ke klien dan segera dijalankan oleh klien, yaitu koneksi real-time satu arah dari server ke klien. Koneksi klien-ke-server menggunakan koneksi yang berbeda dari koneksi tersebut. Misalnya, permintaan HTML standar membuat koneksi baru untuk setiap data yang dikirim.
Ajax long polling tidak membuat koneksi yang persisten, melainkan polling dengan terus-menerus membuat permintaan ke server. Tunggu server merespons dan tutup koneksi ini pada setiap koneksi, lalu segera buat permintaan baru. Tentu saja, ini akan menyebabkan beberapa penundaan saat koneksi diatur ulang dan disambungkan kembali.
Untuk informasi tentang metode transportasi yang didukung oleh berbagai konfigurasi, lihat Platform yang Didukung. (IE membutuhkan 8 atau lebih tinggi, browser lain adalah versi -1 saat ini)
Proses pemilihan metode transfer
Daftar berikut menunjukkan bagaimana SignalR memutuskan jenis mana yang akan digunakan untuk transmisi.
IE8 dan sebelumnya, gunakan polling panjang.
Jika JSONP dikonfigurasi (yaitu parameter jsonp diatur ke true saat menghubungkan), gunakan polling panjang.
Jika Anda menggunakan koneksi lintas domain (yaitu, titik akhir SignalR dan halaman tidak berada di domain yang sama), gunakan WebSockets jika kondisi berikut terpenuhi:
Klien mendukung Berbagi Sumber Daya Lintas Domain (CORS), lihat CORS di untuk detailnya
Klien mendukung WebSocket
Server mendukung WebSocket
Jika salah satu dari kondisi di atas tidak terpenuhi, jajak pendapat panjang digunakan. Untuk informasi selengkapnya tentang koneksi lintas-domain, lihat Cara membuat koneksi lintas-domain.
Jika Anda tidak mengonfigurasi penggunaan JSONP dan koneksi bukan lintas domain, gunakan WebSocket, tentu saja, asalkan klien dan server mendukung WebSocket.
Jika klien atau server tidak mendukung WebSockets, gunakan server untuk mengirim peristiwa.
Jika server mengirim peristiwa tidak tersedia, gunakan Bingkai Selamanya.
Jika Bingkai Selamanya tidak tersedia, gunakan polling panjang.
Pantau transmisi
Anda dapat melihat metode transportasi apa yang digunakan aplikasi Anda dengan mengaktifkan pengelogan Hub dan di konsol browser Anda.
Untuk mengaktifkan pengelogan, tambahkan perintah berikut ke aplikasi klien:
nnection.hub.logging = benar;

6. Inspeksi dan transportasi:    

Anda dapat melihat metode transportasi apa yang digunakan aplikasi Anda dengan mengaktifkan pengelogan Hub dan di konsol browser Anda. Untuk mengaktifkan pengelogan, tambahkan perintah berikut ke aplikasi klien:
    nnection.hub.logging = benar;
        $.connection.hub.logging = true;
Di IE, tekan F12 untuk membuka alat pengembang dan klik tab Konsol.

Di Chrome, tekan Ctrl+Shift+J untuk membuka konsol


Dengan mengamati pencatatan di konsol, Anda dapat melihat metode transmisi yang digunakan SignalR.


7. Pengiriman yang Ditunjuk:

Menegosiasikan metode transmisi membutuhkan sejumlah waktu dan sumber daya server/klien. Jika lingkungan klien diketahui, maka metode transportasi dapat ditentukan saat koneksi dimulai untuk meningkatkan performa. Kode berikut menunjukkan penggunaan polling panjang Ajax secara langsung pada inisiasi koneksi jika klien diketahui mendukung protokol lain:
connection.start({ transport: 'longPolling' });
Jika Anda ingin klien menegosiasikan transportasi dalam urutan tertentu, Anda dapat menentukan urutan di mana negosiasi dicoba. Kode di bawah ini menunjukkan cara mencoba menggunakan WebSockets terlebih dahulu dan menggunakan polling panjang langsung setelah gagal.
connection.start({ transport: ['webSockets','longPolling'] });
Konstanta string yang ditentukan oleh pengguna didefinisikan sebagai berikut:
webSoket
forverFrame
serverSentEvents
longPolling

8. Koneksi dan Hub API SignalR mencakup dua model komunikasi klien-server: koneksi persisten dan hub.

Koneksi mewakili titik akhir sederhana untuk mengirim pesan tunggal, dikelompokkan, atau disiarkan. PersistentConnection API (diwakili oleh kelas PersistentConnection dalam kode .NET) memberi pengembang akses langsung ke protokol komunikasi yang mendasari SignalR. Pengembang yang telah menggunakan API berbasis koneksi seperti WCF akan lebih terbiasa dengan model komunikasi koneksi.
Hub adalah alur komunikasi berbasis API tetapi tingkat tinggi yang memungkinkan klien dan server memanggil metode langsung satu sama lain. SignalR melakukan pekerjaan yang luar biasa dalam menangani penjadwalan lintas mesin, memungkinkan klien untuk dengan mudah memanggil metode di server seolah-olah mereka memanggil metode lokal, dan sebaliknya. Pengembang yang telah menggunakan AIP berbasis panggilan jarak jauh seperti .Net Remote akan lebih akrab dengan model hub. Dengan menggunakan hub, Anda juga dapat meneruskan parameter yang diketik dengan kuat ke metode dan mengikatnya ke model.

        Diagram arsitektur: Diagram di bawah ini menunjukkan hubungan antara hub, koneksi berkelanjutan, dan teknologi dasar yang digunakan untuk transportasi.


9. Cara kerja hub:

Ketika kode server memanggil klien, server akan mengirim paket yang berisi metode dan parameter panggilan (ketika objek digunakan sebagai parameter metode, itu akan diserialisasikan sebagai JSON untuk dikirim) ke klien. Klien kemudian memeriksa nama metode yang diterima dan melakukan pencarian pencocokan dalam metode yang ditentukan klien, dan jika pencocokan berhasil, metode dijalankan dan objek yang dideserialisasi digunakan sebagai parameter metode.
Anda dapat menggunakan alat seperti Fiddler untuk memantau eksekusi panggilan metode. Gambar berikut menunjukkan metode yang diambil dari log Fiddler untuk dikirim dari server SignalR ke klien browser web. Metode yang dimulai dari hub disebut MoveShapeHub, dan metode yang disebut adalah updateShape.


Dalam contoh ini, nama hub diidentifikasi dengan parameter "H", nama metode diidentifikasi dengan parameter "M", dan objek parameter yang dikirim ke metode diidentifikasi dengan parameter "A". Aplikasi yang menghasilkan pesan diimplementasikan dalam tutorial komunikasi real-time frekuensi tinggi.
Pilih model komunikasi:
Sebagian besar aplikasi menggunakan API hub, yang dapat digunakan dalam situasi berikut:
Anda perlu menentukan format pengiriman pesan.
Pengembang lebih suka menggunakan model perpesanan dan penjadwalan daripada model panggilan jarak jauh
Model perpesanan sedang digunakan dalam aplikasi yang ada dan direncanakan untuk di-porting ke SignalR.






Mantan:.net/c# multithreaded modifikasi koleksi akan menjadi masalah?
Depan:asp.net mvc4.0 Menginstal SignalR (1)
 Tuan tanah| Diposting pada 27/08/2018 14.18.05 |
Penjelasan metode umum hub


Klien.Penelepon: Dapat berkomunikasi dengan penelepon

Klien.Lainnya: Berkomunikasi dengan semua klien yang terhubung ke hub ini kecuali Anda sendiri

Clients.All: Dapat berkomunikasi dengan semua klien yang terhubung ke hub ini

Clients.OthersInGroup: Dapat berkomunikasi dengan klien lain yang terhubung ke Hub selain grup yang ditentukan

Clients.Client: Berkomunikasi dengan klien yang menentukan ConnectionId

Clients.AllExcept: Dapat berkomunikasi dengan semua klien yang terhubung ke hub ini kecuali untuk ConnectionId yang ditentukan

Clients.Group: Berkomunikasi dengan klien dalam grup tertentu

Clients.User:可以与指定的userId进行通信
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com