nServiceBus vs Mass Transit vs Rhino Service Bus vs lainnya?

104

Hanya melakukan beberapa lonjakan cepat ke kemungkinan menggunakan sistem pesan untuk memproses file yang ada dalam sistem alur kerja yang dipisahkan dengan baik.

Apa pro dan kontra yang ditemukan orang dalam menggunakan masing-masing kerangka kerja di atas? Apa keuntungan menggunakan ini versus sistem MSMQ linting tangan dengan binding WCF dan / atau solusi non-MSMQ ??

mwjackson
sumber

Jawaban:

71

Saya akan merekomendasikan untuk menjauh dari solusi yang digulung tangan karena ada banyak hal yang agak sulit yang perlu dilakukan dengan benar - seperti bagaimana transaksi ditangani, bagaimana pengecualian menyebabkan rollback, bagaimana berhenti memutar kembali tanpa henti (pesan racun), bagaimana mengintegrasikan dengan alur kerja yang berjalan lama sehingga batas pengelolaan negara sejajar, dan banyak lagi.

Anda mungkin menginginkan semacam infrastruktur pengiriman pesan yang tahan lama / transaksional, jadi tidak menggunakan MSMQ Anda akan ditinggalkan dengan Service Broker di platform Microsoft, atau beberapa alternatif lain seperti ActiveMQ. MSMQ memiliki keuntungan karena sudah diinstal pada semua mesin Windows, berbeda dengan Service Broker yang tidak.

Dalam hal memilih antara NServiceBus, Mass Transit, dan Rhino Service Bus - jawaban Stackoverflow yang membandingkan NServiceBus dengan MassTransit ini akan menjadi tempat yang baik untuk memulai ..

Dalam rilis 3.1 kami, kami memperkenalkan NSB Studio - seperangkat alat pemodelan terintegrasi Visual Studio yang memungkinkan Anda untuk memodelkan sistem Anda pada tingkat abstraksi yang lebih tinggi dan memiliki banyak konfigurasi dan inisialisasi NServiceBus dilakukan untuk Anda secara otomatis. Saya akan mengatakan bahwa ini benar-benar memberi tip pada timbangan yang mendukung NServiceBus.

Semoga membantu.

Penafian: Saya adalah penulis NServiceBus.

Udi Dahan
sumber
25
Rhino Service Bus sangat berpusat pada Castle. Jika Anda tidak terbiasa / tidak nyaman dengan Castle sebagai bagian inti dari arsitektur aplikasi Anda, Anda mungkin mengalami kesulitan dengannya. NServiceBus dan Mass Transit atau lebih banyak kontainer agnostik. NServiceBus hadir dengan "server aplikasi" yang menangani hosting kode Anda serta mengubah implementasi infrastruktur aktif (seperti dalam memori, MSMQ, & DB) saat Anda melakukan transisi sistem dari dev ke test ke prod. Itu juga dilengkapi dengan fasilitas pengujian unit untuk logika penanganan pesan Anda & proses yang berjalan lama. Saya tidak percaya MassTransit memiliki ini.
Udi Dahan
35
Mungkin perlu dicatat bahwa Udi adalah PENULIS NServiceBus, jadi pendapatnya mungkin sedikit bias di sini. :) Karena itu, saya sepenuhnya setuju, dan akan menganjurkan penggunaan NServiceBus untuk alasan yang sama seperti yang dia lakukan.
skb
8
@skb: setuju! Udi, kamu harus benar-benar memberikan semacam disclaimer saat menjawab pertanyaan nservicebus, terutama yang seperti ini!
andy
14
Saya masih terbiasa dengan fakta bahwa orang-orang sekarang menemukan NServiceBus yang tidak tahu bahwa saya membuatnya
Udi Dahan
5
@UdiDahan: Bagaimana nServiceBus "open source"? Menerbitkan kode sumber tanpa lisensi untuk menggunakannya tidak melakukan apa pun untuk semangat open source, yaitu berbagi. Saya sepenuhnya mendukung hak Anda untuk mencari nafkah dengan menjual perangkat lunak (saya melakukan hal yang sama), tetapi saya pikir akan jauh lebih akurat jika Anda tidak mempromosikan solusi (posting 2.0) sebagai open source.
Eric J.
52

NServiceBus adalah produk yang bagus tetapi waspadalah terhadap masalah perizinan. Ini memiliki kecenderungan untuk mengubah kebijakan perizinan sesuai keinginan penulis. Lihat misalnya informasi lisensi lama.

Bisa saja di tengah-tengah pengembangan proyek Anda, Anda akan menemukan bahwa Anda harus membayar banyak uang untuk NServiceBus.

Versi gratis juga memiliki batasan kinerja.

MassTransit benar-benar open source gratis, tidak memiliki batasan, dan di bawah lisensi Apache 2.0.

Saya belum pernah menggunakan Rhino Service Bus .

Alex Burtsev
sumber
1
Sebenarnya kami akan menyediakan lisensi baru dengan versi 3.1 yang memungkinkan Anda menjalankannya di beberapa mesin secara gratis (meskipun pada tingkat throughput yang lebih rendah).
Udi Dahan
11
MassTransit adalah laki-laki Anda. Gratis; tidak ada batasan perizinan. Jika Anda dapat melakukannya tanpa desainer aliran dan dapat membuat gulungan tangan Anda sendiri maka Anda tidak dapat mengalahkannya. Itu juga dapat duduk di atas RabbitMQ dan MSMQ memiliki plugin komunitas Azure. MassTranit + RabbitMQ telah membuktikan dirinya sebagai lingkungan stabil yang sangat baik dan dengan sangat cepat memungkinkan Anda mengaktifkan dan menjalankan konsumen / produsen Anda.
Bigtoe
3
Juga pertimbangkan EasyNetQ (pembungkus sederhana di sekitar rabbitMQ) UDI terkejut tidak membebani diskusi dengan saran 4 alternatif yang baik 2 nServiceBus? Apa yang saya maksud. membantu orang-orang dalam perjalanan perpesanan pada tahap awal. Ada banyak cara sederhana (gratis) yang bagus 2 untuk memulai; tidak terlalu penting apa yang Anda gunakan selama itu mudah dan idealnya gratis; (gratis untuk dimainkan, dan bebas untuk diterapkan secara nyata, dan bebas untuk berubah juga nanti) Setelah Anda berkembang, Anda akan mengembangkan daftar masalah Anda sendiri; Maka produk yang lebih matang menjadi keputusan yang mudah, dengan justifikasi biaya yang mudah, misalnya nservicebus.
kode salju
Mulai MassTransit 4.0 MSMQ tidak lagi didukung ( masstransit-project.com/MassTransit )
MyGGaN
25

Pembaruan keadaan Rhino vs NServicebus:

http://www.infoq.com/news/2012/04/nservicebus3-0

InfoQ ke Ayende: Anda sebelumnya telah menulis bus layanan untuk .NET sendiri, yaitu Rhino Service Bus. Haruskah pengguna Rhino Service Bus sekarang mempertimbangkan kembali dan pindah ke NServiceBus?

Ayende: Saya membangun Rhino Service Bus sekitar 2008. Saya membangunnya terutama karena saya tidak senang dengan keadaan bus layanan lain pada saat itu. Saya memiliki kekhawatiran dan arah yang berbeda ketika membangun bus layanan saya, tetapi itu 4 tahun yang lalu. Pada saat itu, saya pikir NServiceBus membuat langkah besar dalam menjadi produk yang lebih mudah digunakan dan memiliki kisah pengembangan out of the box yang jauh lebih baik. Jika saya memulai dengan bus layanan hari ini, saya sangat ragu bahwa saya akan membangun sendiri.

Ciprian Teiosanu
sumber
9

Potensi kerugian dari apa pun yang berbasis MSMQ adalah batasan ukuran pesan maksimum. IIRC berukuran sekitar 4MB, yang mungkin dengan mudah Anda temui jika Anda berurusan dengan file besar dan menyimpan konten file di dalam pesan.

cepat kering
sumber
7
Yang cukup menarik, sebagian besar antrean berbasis cloud bahkan tidak mendukung muatan 100KB, jadi ini adalah sesuatu yang perlu diperhitungkan oleh banyak aplikasi di masa mendatang.
Udi Dahan
32
Dalam Pola Integrasi Perusahaan (Woolf, Hohpe), pola Pemeriksaan Klaim secara khusus menangani masalah ini. Referensi ke payload besar disimpan hanya dalam pesan, menjaga pesan tetap kecil. Ukuran pesan yang besar dapat merusak throughput sistem pesan.
Chris Patterson
4
Ini bukan masalah dengan NServiceBus karena mereka memiliki konsep Bus Data, yang secara transparan bekerja di sekitar batasan ukuran.
Khalid Abuhakmeh