Поделиться через


Сценарии маршрутизации

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

Распространенные сценарии

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

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

Заметка

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

Управление версиями служб

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

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

Инструкции, используемые для создания конфигурации управления версиями служб, см. в разделе Практическое руководство. Управление версиями служб.

Секционирование данных службы

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

Действия, используемые для создания конфигурации секционирования данных службы, см. в разделе Практическое руководство. Секционирование данных службы.

Динамическая маршрутизация

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

Инструкции по реализации динамической маршрутизации см. в разделе Руководство: динамическое обновление.

Многоадресная рассылка

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

  • Форма канала не должна быть запрос-ответ (хотя может быть односторонней или дуплексной), так как запрос-ответ предполагает, что клиентское приложение может получить только один ответ в ответ на запрос.

  • При оценке сообщения несколько фильтров должны возвращать true.

Если эти условия выполнены, каждая конечная точка назначения, связанная с фильтром, возвращающим true, получит копию сообщения.

Сопряжение протоколов

При маршрутизации сообщений между непохожими протоколами SOAP служба маршрутизации использует API WCF для преобразования сообщения из одного протокола в другой. Это происходит автоматически, когда конечные точки службы, предоставляемые службой маршрутизации, используют другой протокол, отличный от конечных точек клиента, на которые направляются сообщения. Это поведение можно отключить, если используемые протоколы не являются стандартными; однако необходимо указать собственный код для мостов.

Обработка ошибок

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

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

Инструкции по настройке обработки ошибок см. в разделе Практическое руководство. Обработка ошибок.

В этом разделе

практическое руководство. Управление версиями служб

практическое руководство. Секционирование данных службы

практическое руководство. Динамическое обновление

Как: обработка ошибок

См. также