Создание маршрутизатора WCF - Архитектура маршрутизации
ОГЛАВЛЕНИЕ
Архитектура маршрутизации
Хотя маршрутизатор можно построить несколькими способами, большинство маршрутизаторов должны иметь возможность получать сообщения, отправленные любой службе, и должны быть способны передать первоначальное сообщение соответствующей целевой службе. Существуют два фундаментальных подхода к созданию маршрутизаторов: сквозной маршрутизатор и обрабатывающий маршрутизатор.
Сквозной маршрутизатор прозрачен для клиента. Клиент связан с подчиненными службами, и сообщения просто протекают через маршрутизатор. Клиент должен отправить сообщение маршрутизатору, используя совместимый транспортный протокол и кодировщик сообщений, но требования любых протоколов безопасности, надежности сеансов, сеансов приложений и прочих, требуемые каналом службы, удовлетворяются сообщением, созданным на клиенте. Маршрутизатор может рассматривать заголовки сообщений или даже вставлять заголовки, но изначальные элементы сообщения перенаправляются службе в неизменном виде. Такой тип отношений показан на рис. 4.
Рис. 4 Сквозной маршрутизатор
Обрабатывающий маршрутизатор играет более активную роль в обработке сообщений для приложения. В силу этого клиент связан уже с самим маршрутизатором в том, что касается транспорта, шифрования и совместимости протоколов, хотя клиент все же должен иметь возможность отправлять сообщения, совместимые с подчиненными службами. Сообщения протекают через маршрутизатор к службам, и тело сообщения – вместе с требуемыми службой заголовками – остается неизменным.
Безопасность, надежность сеансов, а также заголовки или сообщения, относящиеся к другим протоколам связи, обычно обрабатываются маршрутизатором, и маршрутизатор создает новое сообщение с соответствующим потоком связи для подчиненных служб. На рис. 5 показана совместимость для обрабатывающего маршрутизатора.
Рис. 5 Обрабатывающий маршрутизатор
Каждая настройка маршрутизатора имеет свои практические применения. Также возможно реализовать гибридное решение, смешивающее эти два.