Что такое служебная шина и когда она мне нужна?

101

Я слышал разговоры о NServiceBus , но не совсем понял, что это такое. Они утверждают, что являются «самой популярной служебной шиной с открытым исходным кодом для .net».

Так; что такое служебная шина и когда она мне понадобится?

stiank81
источник
Я очень опаздываю на вечеринку, я не буду публиковать это как ответ, потому что это не так, а короче говоря, если вы не знаете, зачем он вам нужен, скорее всего, вы этого не сделаете ... он решает конкретный проблема, которой у вас, вероятно, нет, связана с подключением приложений и предоставлением вашему бизнесу централизованного API.
War
9
@Wardy Я не согласен с вашим утверждением. Тот факт, что вы чего-то не понимаете или не знаете, что это, не означает, что это не поможет вам узнать об этом,
Кристиан Тома,
Это не было оправданием невежества, но больше указывало на то, что служебная шина - это термин, который часто используют, когда вы сталкиваетесь с проблемой, которую он решает, поэтому вам она либо понадобится, либо не будет, и, следовательно, никогда не придется беспокоиться о Это.
War
Я бы добавил это как правку, но это в корне изменило бы вопрос ... NServiceBus теперь известен как «Платформа особого обслуживания», и его можно найти на specific.net (куда NServiceBus.com все равно перенаправляется сейчас).
Дэн Аткинсон
Если вы не знаете названия или концепции уже существующей вещи, скорее всего, вы напишете свое собственное. Поэтому полезно знать о них, чтобы вы могли их использовать (если вам нужно)
noelicus

Ответы:

80

Вы можете думать о служебной шине как об Ethernet SOA.

Прежде всего, он вводит язык идентификации вещей, такой как IP-адрес в Ethernet. Это имя не является физическим по своей сути.

Затем у вас есть что-то физическое, задействованное на каждом узле, например, очередь в случае шины для поддержки полусвязанной связи или карта Ethernet в метафоре.

Помимо физического, существует «протокольная» часть коммуникации, такая как стек OSI для Ethernet. В случае шины это клиентские библиотеки, используемые кодом приложения.

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

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

Уди Дахан
источник
Спасибо! Думаю, теперь у меня есть общая картина! На самом деле задавал этот вопрос, чтобы немного подготовиться к сеансу, который вы проводите сегодня вечером, но не похоже, что я его
выдержу
12

Прочтите статью в Википедии о Enterprise Service Bus .

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

Если вы не уверены, зачем вам это нужно, я бы посоветовал прочитать, что делает хорошую сервис-ориентированную архитектуру. Книга, которая действительно открыла мне глаза и доказала разницу между просто наличием веб-сервисов и истинной сервис-ориентированной архитектурой, была « Сервис-ориентированная архитектура: концепции, технологии и дизайн» Томаса Эрла.

Джастин Нисснер
источник
Значит, я могу использовать его для связи между настольным клиентским приложением и сервером? То есть, если сервер находится внутри компании.
stiank81
Ты мог. Вы также можете использовать его для связи между различными службами, разными версиями разных служб и т. Д. (Включая ситуации, когда службы используют разные протоколы).
Джастин Нисснер,
11

Этот термин был введен в SOA, который в некотором смысле является преемником (как модное слово) EAI .

Когда тебе это нужно? Это хороший вопрос. Это связано с большой сложностью.

Эмпирическое правило могло бы быть выполнено, если оно решает больше проблем, чем вызывает.

Если серьезно, если у вас неоднородная среда и вы хотите согласовать (разные) приложения (использующие разные технологии) с бизнес-процессами. Тогда было бы полезно использовать BPEL (но это создает проблемы из-за миграции) для оркестровки и хореографии.

РЕДАКТИРОВАТЬ: Чего нет в Википедии, так это практики: ESB может адаптироваться с использованием специальных соединителей, старых терминальных приложений для использования с Corba или Java Enterprise, что подразумевается под совместимостью. Недостатком является наличие более 100 «стандартов» вокруг SOAP, которые не работают без огромных усилий.

Он вам обязательно понадобится, если вам нужно объединить ИТ-системы в течение шести месяцев после слияния двух крупных страховых компаний.

укладчик
источник
Итак - в моем настольном приложении, которое имеет «простую» связь со стороной сервера, нет необходимости расширять служебную шину? Может ли это помочь мне реализовать модель push с сервера? Или в этом сценарии будет больше боли, чем выгоды?
stiank81
@ stiank81, извините, я прочитал служебную шину (Enterprise) и сработали синапсы. Я проверил вашу ссылку на NServiceBus, они нацелены на одно и то же, вам не нужно что-то подобное в приложении клиент-сервер. Это означает концепцию нескольких приложений, задействованных в одном бизнес-процессе. Если бы это сработало для вас? Если он решает больше проблем, чем вызывает.
stacker
Используйте его, «если он решает больше проблем, чем вызывает» ... люблю его.
noelicus