Servicebus là gì và khi nào tôi cần một cái?


101

Tôi đã nghe nói về NServiceBus , nhưng tôi chưa thực sự hiểu nó là gì. Họ tự xưng là "Xe buýt dịch vụ nguồn mở phổ biến nhất cho .net".

Vì thế; "Xe buýt dịch vụ" là gì, và khi nào tôi cần một chiếc?


Tôi thực sự đến muộn, tôi sẽ không đăng câu trả lời này vì nó không phải như vậy nhưng tóm lại, nếu bạn không biết tại sao bạn cần một cái thì rất có thể bạn không ... nó giải quyết một vấn đề cụ thể vấn đề mà bạn có thể không gặp phải khi kết nối các ứng dụng và cung cấp cho doanh nghiệp của bạn một API tập trung.
Chiến tranh

9
@Wardy Tôi không đồng ý với tuyên bố của bạn. Thực tế là bạn không hiểu điều gì đó hoặc không biết nó là gì, không có nghĩa là nó sẽ không giúp bạn biết về nó
Cristian Toma

Đó không phải là lời bào chữa cho sự thiếu hiểu biết mà chỉ ra rằng xe buýt dịch vụ là một thuật ngữ được sử dụng nhiều khi bạn gặp phải vấn đề mà nó giải quyết, vì vậy bạn sẽ cần nó hoặc bạn sẽ không và do đó không bao giờ phải lo lắng về nó.
War

Tôi muốn thêm này như là một chỉnh sửa nhưng nó về cơ bản sẽ thay đổi câu hỏi ... NServiceBus bây giờ được gọi là "đặc biệt Dịch vụ Nền tảng" và có thể được tìm thấy tại particular.net (đó là nơi NServiceBus.com chuyển hướng bây giờ anyway).
Dan Atkinson

Nếu bạn không biết tên hoặc khái niệm của một thứ đã tồn tại, bạn có thể viết riêng của chúng. Vì vậy nó tốt để biết về họ, do đó bạn có thể sử dụng chúng (nếu bạn cần)
noelicus

Câu trả lời:


80

Bạn có thể coi bus dịch vụ là Ethernet của SOA.

Đầu tiên và quan trọng nhất, nó giới thiệu một ngôn ngữ xác định mọi thứ, chẳng hạn như địa chỉ IP trong Ethernet. Cái tên này vốn dĩ không phải là một thứ vật chất.

Tiếp theo, bạn có một cái gì đó liên quan đến vật lý trên mỗi nút, chẳng hạn như hàng đợi trong trường hợp xe buýt để hỗ trợ giao tiếp bán kết nối hoặc thẻ Ethernet trong phép ẩn dụ.

Ngoài phần vật lý, còn có phần "giao thức" của giao tiếp, như ngăn xếp OSI cho Ethernet. Với bus, đây là thư viện khách được sử dụng bởi mã ứng dụng.

Cuối cùng, bạn có thể xem một bus dịch vụ cung cấp mức trừu tượng cao hơn tiếp theo để xây dựng hệ thống phân tán. Bạn cũng có thể sử dụng nó cho giao tiếp máy khách-máy chủ để cung cấp cho bạn khả năng nhắn tin một chiều lâu dài cũng như để máy chủ đẩy thông báo trở lại máy khách.

Cụ thể, bạn sẽ thấy NServiceBus khá nhẹ và dễ sử dụng sau khi bạn sử dụng công nghệ xếp hàng - sự lựa chọn của bạn gồm RabbitMQ, MSMQ, Bảng SQL thông thường, Amazon SQS, Azure Storage Queues và Azure Service Bus.


Cám ơn! Hãy nghĩ rằng tôi đã có bức tranh lớn ngay bây giờ! Thực sự đã hỏi câu hỏi này để chuẩn bị một chút cho phiên bạn tổ chức tối nay, nhưng có vẻ như tôi sẽ không làm được ..
stiank81

12

Kiểm tra bài viết trên Wikipedia về Xe buýt Dịch vụ Doanh nghiệp .

Một Service Bus hoạt động như một lớp trừu tượng khác trong nhiệm vụ không bao giờ kết thúc để triển khai một Kiến trúc Hướng Dịch vụ tốt. Service Bus có thể xử lý một số công việc nặng nề được thấy đằng sau một Kiến trúc Hướng Dịch vụ tốt như Nhắn tin, Định tuyến và Phối hợp Dịch vụ.

Nếu bạn không chắc tại sao bạn lại muốn bất cứ thứ gì như vậy, tôi khuyên bạn nên đọc về những gì tạo nên một Kiến trúc hướng dịch vụ tốt. Cuốn sách đã thực sự mở mang tầm mắt của tôi và chứng minh sự khác biệt giữa việc chỉ có Dịch vụ Web và có Kiến trúc hướng dịch vụ thực sự là Kiến trúc hướng dịch vụ: Khái niệm, Công nghệ và Thiết kế của Thomas Erl


Vậy tôi có thể sử dụng nó để thực hiện giao tiếp giữa ứng dụng máy khách trên máy tính để bàn và máy chủ không? Đó là nơi máy chủ ở trong nhà.
stiank81

Bạn có thể. Bạn cũng có thể sử dụng nó để liên lạc giữa các dịch vụ khác nhau, các phiên bản khác nhau của các dịch vụ khác nhau, v.v. (bao gồm cả các trường hợp mà các dịch vụ sử dụng các giao thức khác nhau).
Justin Niessner

11

Thuật ngữ này được giới thiệu cùng với SOA , theo cách thức kế thừa (như từ buzz) của EAI .

Khi bạn cần nó? Đó là một câu hỏi hay. Nó đi kèm với rất nhiều phức tạp.

Quy tắc ngón tay cái có thể được thực hiện nếu nó giải quyết được nhiều vấn đề hơn nó gây ra.

Nghiêm túc nếu bạn có một môi trường không đồng nhất và muốn sắp xếp các ứng dụng (khác nhau) (sử dụng công nghệ khác nhau) với các quy trình kinh doanh. Sau đó, có thể hữu ích khi sử dụng BPEL (nhưng điều này gây ra các vấn đề do di chuyển) để dàn dựngbiên đạo

CHỈNH SỬA: Những gì không có trên wikipedia, là thực tế: Một ESB có thể thích ứng bằng cách sử dụng các trình kết nối đặc biệt, các ứng dụng đầu cuối cũ để sử dụng với Corba hoặc Java Enterprise có nghĩa là khả năng tương tác. Hạn chế là hơn 100 'Tiêu chuẩn' xung quanh SOAP sẽ không hợp tác nếu không có nỗ lực rất lớn.

Bạn chắc chắn cần nó nếu bạn phải kết nối các hệ thống CNTT trong vòng sáu tháng sau khi hợp nhất 2 công ty đảm bảo lớn.


Vì vậy - trong ứng dụng máy tính để bàn của tôi có giao tiếp "đơn giản" với phía máy chủ, không cần phải mở rộng với Service Bus? Nó có thể giúp tôi triển khai mô hình đẩy từ máy chủ không? Hay sẽ đau hơn là đạt được trong kịch bản này?
stiank81

@ stiank81 xin lỗi, tôi đã đọc xe buýt dịch vụ (Doanh nghiệp) và các khớp thần kinh bị kích hoạt. Tôi đã kiểm tra liên kết của bạn tới NServiceBởi vì chúng nhắm mục tiêu giống nhau, bạn không cần một cái gì đó tương tự trong ứng dụng máy chủ khách hàng. Nó có nghĩa là theo khái niệm cho nhiều ứng dụng tham gia vào một quy trình kinh doanh. Nếu nó sẽ làm việc cho bạn? Nếu nó giải quyết được nhiều vấn đề hơn nó gây ra.
stacker

Sử dụng nó "nếu nó giải quyết nhiều vấn đề hơn nó gây ra" ... yêu nó.
noelicus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.