Создание маршрутизатора WCF - Случаи транзитных маршрутизаторов

ОГЛАВЛЕНИЕ

Случаи транзитных маршрутизаторов

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

Балансировка нагрузки и распределение работы по ресурсам сервера наилучшим образом подходит для NLB (балансировка сетевой нагрузки) или даже больше – для устройств балансировки нагрузки на основе оборудования. Кроме этого, маршрутизатор WCF может быть полезен для балансировки нагрузки, если службы размещаются в средах без «излишеств», когда службы устанавливаются на физические инфраструктуры, не доступные непосредственному управлению, и когда требуется выполнять маршрутизацию на основе характерной для домена логики, или если приложение просто вызывает облегченное, легко настраиваемое решение маршрутизации. Такой маршрутизатор WCF можно использовать для доставки сообщений службам, размещенным в нескольких процессах на одной и той же машине, или распределенным на несколько машин.

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

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