Що таке службова шина і коли мені потрібна?


101

Я чув про розмови про NServiceBus , але я не дуже зрозумів, що це таке. Вони стверджують, що це "найпопулярніша шина сервісу з відкритим кодом для .net".

Так; що таке "службова шина", і коли мені потрібна?


Я дуже спізнився на вечірку, я не опублікую це як відповідь, тому що це не як таке, але коротше, якщо ви не знаєте, навіщо вам це потрібно, то, швидше за все, це не так ... це вирішує конкретне Проблема, яка, ймовірно, не має підключення програм та надання вашому бізнесу централізованого API.
Війна

9
@Wardy Я би не погодився з вашим твердженням. Те, що ви щось не розумієте чи не знаєте, що це таке, не означає, що це не допоможе вам дізнатися про це
Крістіан Тома,

Це не було приводом для невігластва, але більше вказувало на те, що службова шина - це термін, який дуже багато піддається, коли ви стикаєтеся з проблемою, яку вона вирішує, тож вам це знадобиться, або вам не доведеться, і, отже, ніколи не потрібно турбуватися про це це.
Війна

Я б додав це як редагування, але це кардинально змінило б питання ... NServiceBus зараз відомий як "Платформа особливих сервісів " і його можна знайти на веб-сайті зокрема.net (куди зараз NServiceBus.com переспрямовує).
Ден Аткінсон

Якщо ви не знаєте імені чи поняття речі, яка вже існує, вона, ймовірно, пише свою власну. Тому добре про них знати, щоб ви могли їх використовувати (якщо вам потрібно)
noelicus

Відповіді:


80

Ви можете вважати службову шину як Ethernet SOA.

Перш за все, він вводить мову ідентифікації речей, як-от IP-адресу в Ethernet. Це ім'я не є чимось властивим фізичним.

Далі ви маєте щось фізичне залучення до кожного вузла, наприклад, черга у випадку шини для підтримки напівзв’язаного зв'язку або картка Ethernet у метафорі.

Крім фізичної, є "протокольна" частина комунікації, як стек OSI для Ethernet. З шиною це бібліотеки клієнтів, які використовуються кодом програми.

Зрештою, ви можете розглядати службову шину як наступний більш високий рівень абстрагування для побудови розподілених систем. Ви можете використовувати його також для спілкування клієнт-сервер, щоб отримати довговічне одностороннє обмін повідомленнями, а також для того, щоб сервер відсилав сповіщення клієнту.

Зокрема, ви виявите, що NServiceBus є досить легким та простим у використанні, як тільки ви укладете мир із його використанням технологій чергування - ваш вибір RabbitMQ, MSMQ, регулярні таблиці SQL, Amazon SQS, черги зберігання Azure та службова шина Azure.


Дякую! Подумайте, я зараз отримав велику картину! Насправді я задав це запитання трохи підготовленим до сесії, яку ви провели сьогодні ввечері, але схоже, я не зроблю це ..
stiank81

12

Перегляньте статтю Вікіпедії для Enterprise Service Bus .

Службова шина виступає ще одним рівнем абстракції у нескінченних квестах для впровадження хорошої орієнтованої на сервіс архітектури. Службова шина може обробляти деякі важкі підйоми, що спостерігаються за хорошою сервісно-орієнтованою архітектурою, наприклад, обмін повідомленнями, маршрутизацією та сервісною службою.

Якщо ви не впевнені, чому ви хочете чогось подібного, я б запропонував ознайомитись із тим, що робить гарну сервісно-орієнтовану архітектуру. Книга, яка справді відкрила мені очі і доводила різницю між просто наявністю веб-служб та справжньою сервісно-орієнтованою архітектурою, була архітектура, орієнтована на обслуговування: Томас Ерл : концепції, технології та дизайн


Тож я можу використовувати його для зв'язку між настільним клієнтським додатком та сервером? Там, де знаходиться сервер, тобто.
stiank81

Ти міг. Ви також можете використовувати його для зв'язку між різними службами, різними версіями різних служб тощо (включаючи ситуації, коли служби використовують різні протоколи).
Джастін Нісснер

11

Цей термін було введено разом із SOA, який певним чином є спадкоємцем EAI .

Коли вам це потрібно? Це гарне запитання. Він поставляється з великою складністю.

Велике правило може, якщо воно вирішить більше проблем, ніж викликає.

Будьте серйозні, якщо у вас неоднорідне середовище і хочете узгодити (різні) програми (з використанням різної технології) з бізнес-процесами. Тоді може бути корисним використання BPEL (але це створює проблеми міграцією) для оркестрації та хореографії

EDIT: Що не є у wikipedia, це практика: ESB може виконувати адаптацію за допомогою спеціальних роз'ємів, старих термінальних додатків для використання з Corba або Java Enterprise, які мають на увазі сумісність. Недолік - понад 100 «стандартів» навколо SOAP, які не співпрацюють без величезних зусиль.

Вам, безумовно, це потрібно, якщо вам доведеться підключити ІТ-системи протягом шести місяців після злиття двох великих компаній, що надають страхові послуги.


Отже - у моєму настільному додатку, який має "просте" спілкування з серверною стороною, немає необхідності широко використовувати сервісну шину? Чи можу я допомогти мені реалізувати push-модель із сервера? Або це буде більше болю, ніж виграш у цьому сценарії?
stiank81

@ stiank81 Вибачте, що я прочитав службову шину та звільнено від синапсів. Я перевірив ваше посилання на NServiceBus, вони націлені на те саме, вам не потрібно щось подібне в клієнтському сервері. Це розуміється під концепцією для декількох додатків, що беруть участь в одному бізнес-процесі. Якби це працювало для вас? Якщо це вирішує більше проблем, ніж викликає.
укладальник

Використовуйте його, "якщо він вирішить більше проблем, ніж викликає" ... любите це.
noelicus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.