nServiceBus vs Mass Transit vs Rhino Service Bus กับอื่น ๆ ?


104

เพียงแค่ทำการเพิ่มขึ้นอย่างรวดเร็วโดยอาจใช้ระบบส่งข้อความเพื่อประมวลผลไฟล์ที่อยู่ในระบบขั้นตอนการทำงานที่แยกออกมาอย่างดี

อะไรคือข้อดีและข้อเสียที่ผู้คนพบจากการใช้แต่ละกรอบข้างต้น? ข้อดีของการใช้สิ่งเหล่านี้กับระบบ MSMQ แบบรีดด้วยมือกับการผูก WCF และ / หรือโซลูชันที่ไม่ใช่ MSMQ คืออะไร?

คำตอบ:


71

ฉันขอแนะนำให้อยู่ห่างจากโซลูชันที่รีดด้วยมือเนื่องจากมีหลายสิ่งที่ค่อนข้างยากที่ต้องทำให้ถูกต้องเช่นวิธีจัดการธุรกรรมข้อยกเว้นทำให้เกิดการย้อนกลับอย่างไรวิธีหยุดการย้อนกลับอย่างไม่มีที่สิ้นสุด (ข้อความพิษ) วิธีการรวมเข้ากับเวิร์กโฟลว์ที่ใช้งานยาวนานเพื่อให้ขอบเขตการจัดการของรัฐสอดคล้องกันและอื่น ๆ

คุณอาจต้องการโครงสร้างพื้นฐานการส่งข้อความที่ทนทาน / ธุรกรรมดังนั้นการไม่ใช้ MSMQ คุณจะถูกปล่อยให้อยู่กับ Service Broker บนแพลตฟอร์ม Microsoft หรือทางเลือกอื่น ๆ เช่น ActiveMQ MSMQ มีประโยชน์ในการติดตั้งบนเครื่อง Windows ทั้งหมดซึ่งตรงข้ามกับ Service Broker ซึ่งไม่ได้เป็นเช่นนั้น

ในแง่ของการเลือกระหว่าง NServiceBus, Mass Transit และ Rhino Service Bus - คำตอบ Stackoverflow นี้เปรียบเทียบ NServiceBus กับ MassTransitจะเป็นจุดเริ่มต้นที่ดี ..

ในรุ่น 3.1 ของเราเราขอแนะนำ NSB Studio ซึ่งเป็นชุดเครื่องมือการสร้างแบบจำลองแบบรวมของ Visual Studio ที่ช่วยให้คุณสามารถสร้างแบบจำลองระบบของคุณในระดับที่สูงขึ้นของนามธรรมและมีการกำหนดค่าและการเริ่มต้น NServiceBus จำนวนมากให้คุณโดยอัตโนมัติ ฉันจะบอกว่านี่เป็นเคล็ดลับในการใช้งาน NServiceBus

หวังว่าจะช่วยได้

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียน NServiceBus


25
Rhino Service Bus อยู่ใจกลางปราสาทมาก หากคุณไม่คุ้นเคย / ไม่คุ้นเคยกับ Castle ในฐานะที่เป็นส่วนหลักของสถาปัตยกรรมแอปพลิเคชันของคุณคุณอาจประสบปัญหา NServiceBus และระบบขนส่งมวลชนหรือไม่เชื่อเรื่องพระเจ้า NServiceBus มาพร้อมกับ "แอปพลิเคชันเซิร์ฟเวอร์" ที่จัดการโฮสต์โค้ดของคุณตลอดจนการเปลี่ยนแปลงการใช้งานโครงสร้างพื้นฐานที่ใช้งานอยู่ (เช่นในหน่วยความจำ MSMQ และ DB) เมื่อคุณเปลี่ยนระบบจาก dev เป็นการทดสอบเป็น prod นอกจากนี้ยังมาพร้อมกับสิ่งอำนวยความสะดวกในการทดสอบหน่วยสำหรับตรรกะการจัดการข้อความและกระบวนการทำงานที่ยาวนาน ฉันไม่เชื่อว่า MassTransit มีสิ่งเหล่านี้
Udi Dahan

35
อาจเป็นที่น่าสังเกตว่า Udi เป็น AUTHOR ของ NServiceBus ดังนั้นความคิดเห็นของเขาอาจมีอคติเล็กน้อยที่นี่ :) ต้องบอกว่าฉันเห็นด้วยอย่างยิ่งและจะสนับสนุนการใช้ NServiceBus ด้วยเหตุผลเดียวกับที่เขาทำ
skb

8
@skb: ตกลง! Udi คุณควรปฏิเสธความรับผิดชอบบางอย่างเมื่อตอบคำถาม nservicebus โดยเฉพาะคำถามแบบนี้!
andy

14
ฉันยังคงชินกับความจริงที่ว่าตอนนี้ผู้คนกำลังค้นพบ NServiceBus ซึ่งไม่รู้ว่าฉันสร้างมันขึ้นมา
Udi Dahan

5
@UdiDahan: nServiceBus "โอเพ่นซอร์ส" เป็นอย่างไร? การเผยแพร่ซอร์สโค้ดโดยไม่มีใบอนุญาตให้ใช้ไม่ได้ทำอะไรเลยสำหรับจิตวิญญาณของโอเพนซอร์สซึ่งเป็นการแบ่งปัน ฉันสนับสนุนสิทธิ์ของคุณอย่างเต็มที่ในการหารายได้จากการขายซอฟต์แวร์เพื่อหาเลี้ยงชีพ (ฉันทำเหมือนกัน) แต่ฉันคิดว่ามันจะแม่นยำกว่านี้มากถ้าคุณไม่ได้เสนอโซลูชัน (โพสต์ 2.0) เป็นโอเพนซอร์ส
Eric J.

52

NServiceBusเป็นผลิตภัณฑ์ที่ดี แต่ระวังปัญหาการออกใบอนุญาต มีแนวโน้มที่จะเปลี่ยนแปลงนโยบายการออกใบอนุญาตตามที่ผู้เขียนต้องการ ดูตัวอย่างข้อมูลใบอนุญาตเก่า

อาจเกิดขึ้นได้ในระหว่างการพัฒนาโครงการของคุณคุณจะพบว่าคุณต้องจ่ายเงินเป็นจำนวนมากสำหรับ NServiceBus

เวอร์ชันฟรียังมีข้อ จำกัด ด้านประสิทธิภาพ

MassTransitเป็นโอเพ่นซอร์สฟรีไม่มีข้อ จำกัด และอยู่ภายใต้ใบอนุญาต Apache 2.0

ฉันไม่ได้ใช้แรดบริการรถประจำทาง


1
อันที่จริงเราจะให้ใบอนุญาตใหม่กับเวอร์ชัน 3.1 ซึ่งจะช่วยให้คุณสามารถใช้งานบนเครื่องหลายเครื่องได้ฟรี (แม้ว่าจะมีปริมาณงานต่ำกว่าก็ตาม)
Udi Dahan

11
MassTransit คือผู้ชายของคุณ แจกฟรี; ไม่มีข้อ จำกัด ด้านใบอนุญาต หากคุณสามารถทำได้โดยไม่มีนักออกแบบโฟลว์และสามารถม้วนเองได้คุณก็ไม่สามารถเอาชนะมันได้ นอกจากนี้ยังสามารถนั่งอยู่ด้านบนของ RabbitMQ และ MSMQ มีปลั๊กอิน Azure ของชุมชน MassTranit + RabbitMQ ได้พิสูจน์ตัวเองแล้วว่าเป็นสภาพแวดล้อมที่มีเสถียรภาพที่ยอดเยี่ยมและช่วยให้คุณนำผู้บริโภค / ผู้ผลิตของคุณมาใช้งานได้อย่างรวดเร็ว
Bigtoe

3
ลองพิจารณา EasyNetQ (กระดาษห่อแบบเรียบง่ายรอบ ๆ rabbitMQ) UDI ที่น่าประหลาดใจไม่ได้ให้ความสำคัญกับการอภิปรายมากขึ้นพร้อมคำแนะนำ 4 ทางเลือกที่ดี 2 nServiceBus? สิ่งที่ผมหมายถึง. ช่วยเหลือคนในชุมชนในการส่งข้อความในระยะแรก มีวิธีง่ายๆที่ดี (ฟรี) มากมาย 2 วิธีเริ่มต้น; ไม่สำคัญว่าคุณจะใช้อะไรตราบใดที่มันง่ายและฟรีในอุดมคติ (เล่นฟรีและใช้งานได้ฟรีและสามารถเปลี่ยนแปลงได้ฟรีในภายหลัง) เมื่อคุณเติบโตคุณจะพัฒนารายการข้อกังวลของคุณเอง เมื่อถึงจุดนั้นผลิตภัณฑ์ที่เป็นผู้ใหญ่มากขึ้นจะตัดสินใจได้ง่ายโดยมีเพียงแค่ค่าใช้จ่ายที่ง่ายเช่น nservicebus
snowcode

เนื่องจาก MassTransit 4.0 MSMQ ไม่ได้รับการสนับสนุนอีกต่อไป ( masstransit-project.com/MassTransit )
MyGGaN

25

การอัปเดตสถานะของ Rhino vs NServicebus:

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

InfoQ ถึง Ayende: ก่อนหน้านี้คุณเคยเขียนเซอร์วิสบัสสำหรับ. NET ด้วยตัวเองคือ Rhino Service Bus ผู้ใช้ Rhino Service Bus ควรพิจารณาใหม่และย้ายไปที่ NServiceBus หรือไม่?

Ayende:ฉันสร้าง Rhino Service Bus เมื่อประมาณปี 2008 ฉันสร้างมันขึ้นมาเป็นส่วนใหญ่เพราะฉันไม่พอใจกับสถานะของรถบัสบริการอื่น ๆ ในเวลานั้น ฉันมีความกังวลและทิศทางที่แตกต่างกันเมื่อสร้างรถบัสบริการ แต่เมื่อ 4 ปีที่แล้ว ในช่วงเวลานั้นฉันคิดว่า NServiceBus มีความก้าวหน้าอย่างมากในการเป็นผลิตภัณฑ์ที่ใช้งานง่ายขึ้นและมีเรื่องราวการพัฒนานอกกรอบที่ดีกว่ามาก ถ้าฉันเริ่มต้นด้วยรถเมล์บริการวันนี้ฉันสงสัยอย่างยิ่งว่าฉันจะสร้างของตัวเอง


9

ข้อเสียที่เป็นไปได้ของทุกสิ่งที่ MSMQ ขึ้นอยู่คือการ จำกัด ขนาดข้อความสูงสุด IIRC มีขนาดประมาณ 4MB ซึ่งคุณอาจพบได้ง่ายหากคุณจัดการกับไฟล์ขนาดใหญ่และจัดเก็บเนื้อหาไฟล์ไว้ในข้อความ


7
ที่น่าสนใจก็คือคิวบนคลาวด์ส่วนใหญ่ไม่รองรับน้ำหนักบรรทุก 100KB ด้วยซ้ำดังนั้นนี่คือสิ่งที่แอพจำนวนมากจะต้องนำมาพิจารณาในอนาคต
Udi Dahan

32
ในรูปแบบการรวมองค์กร (Woolf, Hohpe) รูปแบบการตรวจสอบการอ้างสิทธิ์จะตอบข้อกังวลนี้โดยเฉพาะ การอ้างอิงถึงเพย์โหลดขนาดใหญ่จะถูกเก็บไว้ในข้อความเท่านั้นทำให้ข้อความมีขนาดเล็ก ข้อความขนาดใหญ่อาจสร้างความเสียหายให้กับปริมาณงานของระบบการส่งข้อความ
Chris Patterson

4
นี่ไม่ใช่ปัญหากับ NServiceBus เนื่องจากพวกเขามีแนวคิดเรื่อง Data Bus ซึ่งทำงานได้อย่างโปร่งใสในการ จำกัด ขนาด
Khalid Abuhakmeh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.