2015-03-20 4 views
2

Проект, над которым я работаю, перемещается от n-уровня до архитектуры SOA, поэтому я читаю хорошие методы SOA. Я изо всех сил пытаюсь понять динамику между тем, чтобы избежать использования сервисов стиля RPC в пользу служб, управляемых событиями, и требования пользовательских интерфейсов получать данные и делать это быстро.Публикация сообщений SOA против процедур вызова

Так, например, в идеале архитектура SOA будет состоять из повторяемого бизнес-процесса, в котором вы можете просто опубликовать сообщение на ESB, которое будет обрабатывать поиск служб, которые обрабатывают это сообщение. Поэтому вместо того, чтобы выполнять процедуру под названием «Настройка нового пользователя», которая предназначена для выполнения всех задач, связанных с новой настройкой пользователя, вы опубликуете сообщение в ESB, которое просто содержит данные нового пользователя и имеет соответствующий тип документа «Новый пользователь» », а затем ESB найдет службы, которые будут обрабатывать это событие, которое затем будет выполнять любые необходимые для конкретного пользователя настройки пользователей.

Однако иногда вам просто нужны данные. Возможно, у вас есть страница, на которой показан список связанных с пользователем данных. Вы не можете просто отключить сообщение в ESB, потому что вам нужны данные назад, и вам это нужно сейчас. Кроме того, вы не запускаете какие-либо бизнес-процессы; вы просто извлекаете данные из ранее выработанных бизнес-процессов (процессы, которые заставляют пользователя ассоциироваться с данными, например). Поэтому, чтобы привести конкретный пример, возможно, я просто хочу увидеть список из 10 фильмов Netflix, которые пользователь просматривал недавно.

Как вы можете смириться с этими разрозненными видами услуг в единой системе SOA?

+0

Без ESB у вас в основном есть процедуры вызова процедур, и все. SOA все о замене такого рода вещей. –

+0

Да, ESB - это клей между различными сервисами SOA *. У вас всегда будет «служебная шина», она просто не может быть «корпоративной». В вашем предложении вы просто используете HTTP как свою служебную шину, которая связывает вас с запросом/ответом. Несмотря ни на что, я не здесь, чтобы спорить о ESB; мой проект использует один, и я не говорю об этом. Я отвечаю за разработку некоторых сервисов, и мой вопрос касается дизайна сервиса. –

ответ

1

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

В вашем случае (при условии, вы не имеете специализированное решение BPM на месте), я бы определить и реализовать два вида услуг на двух чисто концептуальных слоев в ESB:

  • Технический услуги (это входящее прямое сообщение для извлечения/изменения данных), которое может быть вызвано непосредственно другой системой (через ESB) или вызвано другими службами процессов.

  • Технологических услуг на уровне верхних (бизнес), которые в настоящее время запускаются таким образом, событийным (используя тему очередь, например, где услуги процесса слушать их инициирующее событие)

Однако это возможно, не самый оптимальный подход. Я обсуждал бизнес-процессы в выделенном уровне бизнес-процессов и сервисах процесса в ESB в this topic. Не стесняйтесь проверить это, потому что это связано с вашим вопросом.

+0

Ваши ответы на мои вопросы очень хорошо отвечают на мои вопросы. Тема, на которую вы ссылаетесь, помогает разъяснить ее еще дальше. Большое спасибо. –

+0

Добро пожаловать! Я рад, что помог. –

Смежные вопросы