Отправка сообщений SOAP
Существует множество способов обработки полученных сообщений SOAP в соответствующую службу. Двумя простейшими механизмами являются диспетчеризация на уровне транспорта и отправка адресов и действий.
Диспетчеризация на уровне транспорта
При диспетчеризации уровня транспорта базовый HTTP-сервер (например, API HTTP) используется для управления маршрутизацией запросов к устройству и его службам. Сервер предоставляет разные URL-адреса для каждой службы, а для устройства и различных приемников регистрируются для каждого URL-адреса. Это позволяет разрабатывать код таким образом, чтобы каждая служба была изолирована от другой: выполнялась как отдельные компоненты в одном процессе или выполнялась как отдельные процессы.
Диспетчеризация уровня транспорта имеет ряд преимуществ. Сообщения можно отправлять в соответствующий компонент без предварительного анализа конверта SOAP или текста сообщения. Кроме того, существующий механизм маршрутизации сообщений, предоставляемый большинством реализаций HTTP-сервера, можно использовать повторно, что означает, что пользовательский код диспетчеризации не требуется. Он также изолирует код обработки SOAP между службами, что обеспечивает уровень безопасности, так как безопасные службы не передают сообщения через общий код.
Отправка адресов и действий
Диспетчеризация адресов и действий зависит от заголовков SOAP для определения соответствующей службы, в которую отправляется сообщение. Эта модель также может использовать дополнительные сведения, такие как эталонные параметры, для дальнейшей отправки.
Эта модель поощряет повторное использование кода в многоуровневом стеке обмена сообщениями, так как весь код до обработчика SOAP совместно используется всеми службами. Кроме того, отдельные транспортные адреса для служб не требуются, что означает, что адреса UUID можно использовать для конечных точек служб. Диспетчеризация адресов и действий также напрямую преобразуется в модель программирования. Разработчики могут подключать службы и устройства к одному компоненту, который управляет маршрутизацией, а не связываться с уровнем HTTP или создавать отдельные компоненты для каждой службы.