Что такое ESB?
Для начала давайте определимся, зачем нужна эта передача сообщений. Все наши системы так или иначе являются отделенными (decoupled) друг от друга. Например, одна система занимается скачиванием данных. Другая занимается обработкой этих данных – так мы получаем возможность одни и те же данные пускать под разные цели. Еще одна система занимается хранением этих данных и предоставлением доступа к ним. Ну и наконец у нас есть программы которые показывают эти данные на экране.
Существует море вариантов для взаимодействия этих систем, и обычно для таких сценариев применяется нечто под названием Enterprise Service Bus (ESB), т.е. шина для корпоративных сервисов. ESB – это инфраструктурное решение, которое позволит вашим сервисам и приложениям работать друг с другом по одному стандартизованному методу. В случае с библиотекой NServiceBus, которую я предлагаю использовать, используется достаточно древняя технология MSMQ.
Сценарий
Сразу строить сложную архитектуру сложно, поэтому представим что у нас есть две вещи – сервис который получает откуда-то данные (например “сдирает” их с сайтов), и сервис который получает эти данные и записывает их в базу. Представим себе что обработки эти данные не требуют и что их можно записывать в базу “в чем мать родила”. Внимание вопрос: как первый сервис будет передавать данные второму?
Именно для этого нам и пригодится NServiceBus. NSB позволит первому сервису отслылать сообщения о новых данных в общую очередь, из которой их будет брать второй сервис и уже что-то делать с этими данными (например, записывать их в базу). В нашем сценарии, мы представим что первый сервис будет получать информацию о человеке (Person) и передавать ее второму.
Read more: Дмитрий Нестерук