Для расширения возможностей картографического сервиса или сервиса изображений (SOE или SOI), обычно создается код, отображающий необходимые интерфейсы и реализующий вашу бизнес-логику. При работе на Java вы можете приступить к созданию дополнительного модуля, используя SOE или SOI из архетипа Maven. Если вы работаете в .NET, то начинаете работу в Visual Studio с использованием шаблона проекта. Шаблоны обеспечивают внедрение необходимых для расширения интерфейсов и возможность ответа на запросы веб-сервисов REST или SOAP с помощью классов SOESupport.
Подробные инструкции по кодированию расширений вы можете найти в документации ArcGIS Enterprise SDK.
Советы по использованию перехватчиков серверных объектов
При создании перехватчиков серверных объектов (SOI) необходимо обрабатывать все типы входящих запросов, даже если SOI предназначен только для расширения одной или нескольких из многочисленных операций, доступных с картографическими сервисами или сервисами изображений. В этом разделе описываются интерфейсы, которые необходимо обработать, и доступные подходы, в зависимости от наличия или отсутствия защиты связанных функций.
Перехват сервисных запросов REST, SOAP и OGC
Картографические сервисы и сервисы изображений поддерживают три типа запросов:
- Запросы REST API
- Запросы SOAP API
- Запросы OGC
Чтобы SOI перехватывал эти запросы, необходимо обеспечить следующие интерфейсы:
- IRESTRequestHandler – для обработки запросов REST API
- IRequestHandler для обработки запросов SOAP API, включая запросы, сделанные ArcGIS Pro
- IWebRequestHandler – для обработки запросов OGC
Даже если определенная конфигурация сервиса не поддерживает запросы OGC, необходимо обрабатывать все вышеуказанные интерфейсы. В зависимости от используемой бизнес-логики, имеется два подхода.
Примечание:
Если сервис карт или изображений содержит кэшированные листы, запросы, сделанные к этим листам, не могут быть перехвачены.
Вы создаете SOI, который будет выполнять функции защиты, рекомендуется начать с построения всех вышеуказанных интерфейсов и блокировки всех запросов. После создания собственного кода можно логически разрешить доступ через все эти интерфейсы. Если не заблокируете входящие запросы в начале, а затем разрешите доступ, появится большой риск случайной демонстрации уязвимости в системе безопасности.
Если функции защиты использоваться не будут, можно создать три интерфейса, пропустив все запросы через базовый стандартный механизм, чтобы обеспечить нормальное функционирование. Затем последовательно добавьте дополнительную бизнес-логику к операциям, которые вы хотите расширить.
Когда сервис будет настроен на использование SOI, рабочая среда сервера будет перенаправлять все запросы сервиса к SOI. К области ответственности SOI относится фильтрация запросов, передача запроса к карте или объектам сервиса изображений (если применимо), и, при желании, дополнительная обработка запросов перед их возвратом клиенту.
Использование контроля доступа на уровне слоя
Если вы хотите использовать с помощью SOI контроль доступа на уровне слоя, вам также необходимо настроить обработчик REST ArcGIS GIS Server, чтобы отключить кэширование всех ресурсов слоя, входящих в сервис. Это позволит перехватывать операции и фильтровать слои, использование которых не разрешено. Это можно отключить, задав свойству сервиса disableCaching значение true в ArcGIS GIS Server Administrator Directory.
- Откройте ArcGIS GIS Server Administrator Directory и выполните вход. Зачастую, URL-адрес имеет формат https://gisserver.domain.com:6443/arcgis/admin.
- Щелкните сервисы и выберите имя нужного сервиса. Если сервис не отображается в списке, он может находиться в папке этой директории.
- Выберите Редактировать.
- В разделе properties сервиса JSON, добавьте свойство disableCaching и задайте для него значение true, например:
"properties": { ... "disableCaching": "true", ... },
- Щелкните Сохранить изменения.
Создание файла .soe
Расширения (SOE или SOI) хранятся в файле .soe. Файл .soe содержит всю информацию, необходимую для регистрации расширения на ArcGIS GIS Server. Если вы используете .NET, то файл .soe создается при построении проекта из шаблона. Если вы используете Java, вы создаете файл .soe путем построения проекта Maven SOE или SOI. Файл .soe также можно создать с помощью команды mvn install, предоставляемых Esri, которые можно запускать вручную или включать в автоматизированные скрипты построения.
Расширения, разработанные с использованием ArcGIS Enterprise SDK, имеют суффикс _ent, присоединенный к имени файла .soe. Например, расширение с именем SimpleRESTSOE будет иметь выходное имя файла SimpleRESTSOE_ent.soe.