it-swarm-id.com

Apa pilihan terbaik untuk komunikasi antar-proses .NET?

Haruskah saya menggunakan Named Pipes, atau .NET Remoting untuk berkomunikasi dengan proses yang berjalan di mesin saya?

81
mrbradleyt

WCF adalah pilihan terbaik. Ini mendukung sejumlah mekanisme transportasi yang berbeda ( termasukBernamaPipa ) dan dapat sepenuhnya didorong oleh konfigurasi. Saya akan sangat menyarankan Anda melihat WCF.

Berikut adalah blog yang melakukan WCF vs Remoting perbandingan kinerja .

Kutipan dari blog:

WCF dan .NET Remoting benar-benar sebanding dalam kinerja. Perbedaannya sangat kecil (mengukur latensi klien) sehingga tidak masalah mana yang sedikit lebih cepat. Meskipun WCF memiliki throughput server yang jauh lebih baik daripada .NET Remoting. Jika saya akan memulai proyek yang sama sekali baru saya akan memilih WCF. Pokoknya WCF tidak lebih dari Remoting dan untuk semua fitur yang saya suka itu.

Bagian MSDN untuk WCF

58
Eric Schoonover

Jika menggunakan satu mesin, Named Pipes memberi Anda kinerja yang lebih baik dan dapat diimplementasikan dengan infrastruktur remoting serta WCF. Atau Anda bisa langsung menggunakan System.IO.Pipes .

15
Mark Cidade

Jika Anda maksud komunikasi antar-proses, saya menggunakan .NET Remoting tanpa masalah sejauh ini. Jika kedua proses berada pada mesin yang sama, komunikasinya cukup cepat.

Named Pipes jelas lebih efisien, tetapi mereka membutuhkan desain setidaknya protokol aplikasi dasar, yang mungkin tidak layak. Remoting memungkinkan Anda untuk memanggil metode jarak jauh dengan mudah.

5
Dario Solera

Jika Anda menggunakan .NET Framework 3.0 atau lebih baru, saya akan menggunakan WCF. Menggunakan WCF, Anda dapat menggunakan berbagai binding tergantung pada trade-off antara kinerja/interop/dll. yang kamu perlukan.

Jika kinerja tidak kritis dan Anda perlu interop dengan teknologi Layanan Web lainnya, Anda ingin menggunakan pengikatan WS-HTTP. Untuk kasus Anda, Anda dapat menggunakan WCF dengan penjilid net-tcp, atau penjilidan pipa bernama. Baik harus bekerja.

Pandangan pribadi saya adalah bahwa pendekatan WCF lebih bersih karena Anda dapat melakukan layanan Berbasis Kontrak dan fokus pada pesan, bukan objek (Saya membuat generalisasi di sini berdasarkan model pemrograman default WCF/.NET Remoting). Saya tidak suka mengirim objek melalui kawat karena banyak informasi semantik hilang atau tidak jelas. Ketika semua yang Anda lakukan adalah mengirim pesan seperti halnya Anda dengan WCF, menjadi lebih mudah untuk memisahkan kekhawatiran Anda antara komunikasi dan kelas/infrastruktur yang terdiri dari satu node.

3
Jason Olson

Remoting di .NET Framework 2.0 menyediakan saluran IPC untuk komunikasi antar-proses dalam mesin yang sama.

3
icelava

WCF juga memberikan fleksibilitas. Dengan hanya mengubah beberapa konfigurasi (mengikat) Anda dapat memiliki layanan yang sama pada beberapa mesin lain alih-alih IPC pada mesin yang sama. Karenanya kode Anda tetap fleksibel.

2
Vikram I Code

Remoting bersih. Bukan protokol dalam dan dari itu sendiri. Ini memungkinkan Anda memilih protocal yang akan digunakan: SOAP, named-pipes, dll.

1
Joel Coehoorn

Remoting bersih dibangun ke .net untuk melakukan komunikasi proses dalam. Jika Anda menggunakannya, mereka akan terus mendukung dan mungkin meningkatkannya di versi mendatang. Named pipes tidak memberi Anda janji peningkatan dalam versi .net yang akan datang

0
kemiller2002