Найти тему
ПОЛЕЗНО ЗНАТЬ

SOAP: ключ, структура данных кэша, сохранение и извлечение, работа в автономном режиме

Для ускорения доступа к сохраненным ответам, кэш определяет ключ. Используя этот ключ, кэш запрашивает свои внутренние структуры для извлечения желательного ответа. Для web-сервера URL запрошенного документа мог бы служить в качестве ключа документа. Однако подход не будет работать для приложения SOAP, так как все клиенты делают запросы по одному и тому же URL маршрутизатора.

Запрос SOAP RPC содержит имя метода, за которым следуют его аргументы. Простым способом создания ключа из вызова SOAP является соединение строкового представления полностью квалифицированного имени метода и его аргументов в одну длинную строку. Каждый компонент ключа отделяется точкой.

Структура данных кэша

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

Сохранение и извлечение

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

Сохранение ответов SOAP по мере создания кажется на первый взгляд простым, но необходимо позаботиться о проблемах одновременного доступа. Вполне возможно для двух или большего числа клиентов отправить один и тот же запрос одновременно. Вы используете один поток выполнения для создания ответа SOAP, в то время как остальные будут блокироваться.
Основная идея состоит в добавлении элемента в кэш до отправки ответа. Когда получен объект, можно синхронизировать несколько потоков управления, чтобы избежать обработки одного и того же запроса несколько раз.

Когда кэш заполнен, возможна работа приложения в автономном режиме. Более точно, приложение будет находиться в автономном режиме, но кэш останется в режиме онлайн. Это аналогично автономному просмотру, который предлагают наиболее популярные браузеры Интернета. Однако автономный режим применяется к серверу SOAP, а не к клиенту.

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