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

Melihat: 658|Jawab: 5

[Kiat] Proses .NET/C# berkomunikasi antara soket domain gRPC dan Unix

[Salin tautan]
Dipaparkan pada 2025-8-11 20:24:04 | | | |
Persyaratan: Di server yang sama, proses berkomunikasi satu sama lain menggunakan alur anonim, alur bernama, file pemetaan memori, HTTP, TCP, Aliran Input/Output Standar, dll. Terkadang server perlu menyebarkan beberapa aplikasi, dan aplikasi benar-benar dapat berkomunikasi satu sama lain menggunakan soket domain gRPC dan Unix.

resensi
Komunikasi Lintas Proses NamedPipe berbasis .NET/C# [dengan Kode Sumber]
https://www.itsvse.com/thread-10628-1-1.html

Proses induk-anak .NET/C# berkomunikasi menggunakan MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html

Proses induk-anak .NET/C# berkomunikasi menggunakan aliran input/output standar
https://www.itsvse.com/thread-10982-1-1.html

Soket domain Unix

Soket Unix Domain Socket (UDS), Soket Lokal, atau Komunikasi Antarproses (IPC) adalah titik akhir komunikasi yang bertukar data antar proses yang berjalan di sistem operasi Unix atau Unix yang sama.

Nama soket domain Unix mengacu pada nilai parameter domain yang diteruskan ke fungsi yang membuat sumber daya sistem soket. Domain komunikasi yang sama juga dipilih. [ 1 ] AF_UNIXAF_LOCAL

Nilai parameter yang valid untuk typeUDS adalah:

  • SOCK_STREAM (dibandingkan dengan TCP) – Digunakan untuk soket berorientasi aliran
  • SOCK_DGRAM (dibandingkan dengan UDP) – soket berorientasi datagram untuk mempertahankan batas pesan (seperti kebanyakan implementasi UNIX, soket datagram domain UNIX selalu andal dan tidak menyusun ulang datagram)
  • SOCK_SEQPACKET (dibandingkan dengan SCTP) – Soket paket berurutan untuk koneksi yang mempertahankan batas pesan dan mengirimkan pesan dalam urutan pengirimannya


Alat UDS adalah komponen standar dari sistem operasi POSIX.

Mengapa menggunakan soket domain Unix?

Soket domain Unix memungkinkan komunikasi antar-proses pada satu mesin. Jadi mengapa Anda memilihnya daripada TCP/IP? Misalnya, di TCP/IP, Anda dapat menggunakan alamat loopback (localhost) untuk komunikasi server tunggal. Di Windows, mengapa Anda memilihnya daripada Alur Penamaan Windows?

Secara umum, ada beberapa alasan mengapa Anda mungkin memilih untuk menggunakan UDS daripada TCP/IP untuk komunikasi antarproses:

  • Soket domain Unix biasanya memiliki overhead yang lebih sedikit dan kecepatan transfer yang lebih cepat daripada menggunakan TCP/IP
  • Soket TCP/IP adalah sumber daya yang terbatas, sedangkan soket domain Unix tidak memiliki batas keras
  • Soket domain Unix datang dalam bentuk file, sehingga mudah untuk "menemukan" jalur yang diketahui
  • Integrasi dengan sistem file juga menambahkan lapisan keamanan ekstra (jika Anda tidak memiliki akses ke jalur file, Anda tidak dapat mengakses soket)


Poin pertama mudah dipahami - Google cepat akan menunjukkan bahwa tolok ukur UDS dan TCP/IP selalu lebih baik daripada UDS karena tidak hanya memiliki latensi yang jauh lebih rendah, tetapi juga throughput yang jauh lebih tinggi. Hal ini terutama disebabkan oleh fakta bahwa UDS dioptimalkan untuk komunikasi dengan server yang sama,Untuk komunikasi IP, localhost harus melalui tumpukan IP di sisi pengirim dan penerima

Soket TCP/IP adalah sumber daya yang terbatas; Anda hanya dapat menggunakan hingga 65.535 soket sekaligus. Jika Anda menambahkan masalah, jumlah maksimum soket yang sebenarnya TIME_WAIT tersedia mungkin jauh lebih kecil dari nilai ini. Koneksi localhost juga menggunakan soket di kumpulan ini. Menggunakan UDS dengan cerdik menghindari masalah ini; Ini memungkinkan komunikasi tanpa menghabiskan soket TCP/IP.

peladen

Buat proyek konsol .NET 8 baru, ubah SDK menjadi Microsoft.NET.Sdk.Web, dan konfigurasikan sebagai berikut:

Greet.proto dikonfigurasi sebagai berikut:

Kodenya adalah sebagai berikut:

Setelah kompilasi dimulai, seperti yang ditunjukkan di bawah ini:



klien

Buat proyek konsol .NET 8 baru dan referensikan pustaka berikut:

Metode memanggil antarmuka gRPC dipanggil 10 kali, dan setiap panggilan dipanggil selama 200 milidetik, dan kodenya adalah sebagai berikut:

Mulai proyek, dan setelah eksekusi selesai, seperti yang ditunjukkan pada gambar di bawah ini:



Referensi:

Login hyperlink terlihat.
Login hyperlink terlihat.




Mantan:Jetson (1) Jetson Orin Nano Super Developer Kit dibuka-kotak
Depan:Web container netty dan tomcat perbandingan di Spring Boot
 Tuan tanah| Dipaparkan pada 2025-8-11 20:57:04 |
Klien HttptidakgRPCdan komunikasi soket domain Unix

peladen

klien

Seperti yang ditunjukkan di bawah ini:

 Tuan tanah| Dipaparkan pada 2025-8-12 10:05:14 |
ProtokolTipe.Tidak ditentukan: Tidak ada protokol yang ditentukan, dan sistem secara otomatis memilihnya
 Tuan tanah| Dipaparkan pada 2025-8-12 11:02:41 |
Tes c# dapat terhubung ke UDS secara normal


 Tuan tanah| Dipaparkan pada 2025-9-16 15:26:30 |
Menggunakan nginx untuk proxy soket domain Unix (Tidak diuji
Konfigurasinya adalah sebagai berikut:

Prioritaskan UDS: Jika layanan Anda berada di mesin yang sama dengan Nginx dan Anda mencari kinerja tinggi dan latensi rendah, UDS adalah pilihan terbaik.
 Tuan tanah| Dipaparkan pada 2025-9-16 17:11:05 |
Nginx reverse proxy php-fpm menggunakan UDS untuk berkomunikasi
https://www.itsvse.com/thread-11068-1-1.html
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