Картографические сервисы и сервисы изображений ArcGIS Server (включая их расширения, такие как сервисы объектов) можно расширить, используя пользовательские логические элементы, которые могут выполняться в клиентах ArcGIS. Есть два способа расширения сервисов этих типов.
- Расширения объектов сервера (SOE) позволяют создавать новые сервисные операции для расширения базовой функциональности картографических сервисов или сервисов изображений. SOE следует использовать, если у вас имеется определенная бизнес-логика, которую трудно реализовать с помощью API клиентов ArcGIS. Большинство SOE добиваются этого, используя код ArcObjects для работы с данными и картами ГИС. ArcObjects – это основные компоненты ArcGIS, предоставляющие много гибких возможностей для написания ГИС-функций.
- Перехватчики серверных объектов (SOI) позволяют перехватывать запросы к существующим встроенным операциям картографического сервиса или сервиса изображений. Это позволяет применять пользовательскую логику или менять поведение этих сервисов, заменяя существующие операции способом, который не затрагивает работу существующих клиентов. Этими клиентами могут быть приложения, построенные с помощью ArcGIS API for JavaScript, ArcGIS Runtime SDK и др.
В следующих подразделах каждый тип описывается более подробно.
Расширения серверного объекта (SOE)
Дополнительные модули объектов сервера (SOE) подходят для создания новых сервисных операций для расширения базовой функциональности картографических сервисов или сервисов изображений (включая расширения сервисов, такие как сервисы объектов). У SOE имеются следующие преимущества:
- Вы можете предоставить доступ к SOE с помощью веб-сервиса REST и SOAP, что позволит создавать клиенты поверх клиентских API ArcGIS, а также другие REST или SOAP клиенты, что облегчает их использование. К слову, расширения SOE REST будут отображены в ArcGIS Services Directory и они могут предоставлять доступ к основным типам объектов, поддерживаемым клиентскими API ArcGIS, в основном, в формате JSON.
- При создании SOE вы предоставляете методы, выполняющие работу на ArcGIS Server, а не осуществляете большое число вызовов с клиента на сервер. SOE инкапсулируют логику ArcObjects очень эффективно, предоставляя идеальную среду для быстрого выполнения вызовов.
Вы можете разработать SOE, если вам требуется получить доступ к недоступным каким-либо другим способам функциям ArcObjects или к функциям, которые должны выполняться очень быстро. SOE предназначены для опытных разработчиков и для их использования необходимо знание различных платформ разработки. Пакет ArcObjects SDK for Java содержит несколько примеров SOE, которые вы можете изучить.
Нужно ли вам расширение SOE?
Для разработки с использованием SOE, необходимы знания веб-разработки, ArcObjects и таких языков программирования, как Java или C#, основанный на .NET. Для того чтобы они стали доступны на сервере, необходимо выполнить их развертывание. Перед разработкой расширения объектов сервера следует рассмотреть некоторые более простые альтернативы.
Самая простая альтернатива – это создание модели геообработки, которая реализует вашу бизнес-логику, и ее публикация как сервиса. С помощью ModelBuilder можно интерактивно разместить и соединить нужные инструменты вместо того, чтобы писать код ArcObjects. Сервисы геообработки также поддерживают асинхронное выполнение, что позволяет вам запустить задание, сделать что-то другое и вернуться позднее для проверки результатов.
Одним из недостатков сервисов геообработки является то, что они используют относительно много памяти и работают медленнее, чем SOE. Если вы запускаете процесс всего несколько раз в день, это может не представлять проблемы. Однако, если процесс запускается часто или с множеством работающих параллельно пользователей, разработка SOE может стоить затраченного времени.
Многие разработчики писали код ArcObjects в прошлом для различных задач, которые теперь выполняются без ArcObjects. Подробное описание способов решения задач веб-картографии без применения ArcObjects см. в разделе Альтернативы расширениям серверных объектов.
Перехватчики серверных объектов (SOI)
SOI удобно использовать, если вы хотите изменить поведение существующих операций картографических сервисов или сервисов изображений (включая расширения картографических сервисов и сервисов изображений, такие как операции сервисов объектов). Например, можно изменить поведение запроса или ответ на экспорт изображения карты. К примерам того, что можно сделать с помощью SOI, относятся:
- Добавление водяных знаков ко всем изображениям карты
- Обеспечение защиты на уровне слоев
- Разрешение или запрет доступа к определенным операциям по пользовательским ролям
Нужно ли вам расширение SOI?
Для разработки с использованием SOI, необходимы знания веб-разработки, ArcObjects и таких языков программирования, как Java или C#, основанный на .NET. Для того чтобы они стали доступны на сервере, необходимо выполнить их развертывание. Перед разработкой перехватчика серверного объекта, убедитесь, что это именно та функция, которая вам нужна.
Если вы собираетесь расширить возможности сервера новыми функциями, рассмотрите возможность использования SOE или моделей геообработки и скриптов. SOI подходят для добавления новых функций или поведения поверх существующих операций ArcGIS Server, таким способом, который не затрагивает работу существующих клиентских приложений.
Если вы хотите выполнить одну или несколько задач, используя последовательность дополнительных модулей, это можно сделать с помощью SOI. Несколько SOI можно связать вместе в одном или нескольких сервисах. В любое время вы можете изменить список SOI и порядок из выполнения в последовательности.
Вы можете решить создать одни или несколько SOI, если необходимо воплотить собственную бизнес-логику, например, требования к безопасности и аудиту, которые отсутствуют в картографических сервисах или сервисах объектов по умолчанию. Например:
- Ввод водяных знаков на все изображения, созданные с помощью сервера – можно создать серию SOI, которые будут накладывать пользовательский водяной знак на изображения карты, созданные с помощью этого сервиса. Это позволит организациям или владельцам обеспечить наличие товарных знаков на всех изображениях.
- Аудит и протоколирование всех запросов – для отладки можно создать серию SOI, которые будут записывать подробную информацию о входящих запросах, например, полные сведения о входных параметрах и учетных данных пользователя, переданных вместе с запросом.
- Действия после обработки – дополнительная информация из отдельных бизнес-систем, которые не поддерживаются ArcGIS Server, может быть добавлена к исходящим ответам, что позволит связать пространственные данные с другими типами бизнес-данных.
- Контроль доступа к картографическим сервисам на уровне операций – ArcGIS Server поддерживает только разрешение на выполнение операций для всех пользователей сервиса или полное прекращение доступа. Серии SOI могут фильтровать входящие запросы на базе роли пользователя, что позволит использовать доступ к сервису на уровне операций.
- Контроль доступа к картографическим сервисам на уровне слоев – ArcGIS Server поддерживает доступ к данным только на уровне сервиса; пользователь либо имеет полный доступ ко всем данным сервиса, либо не имеет доступа вообще. Можно использовать серии SOI для фильтрации доступа к определенным слоям или даже данным в пределах слоя, на базе роли пользователя.
Что нужно знать для разработки расширения
Расширение может быть разработано только для сервиса определенного типа, либо картографического, либо изображений. Например, нельзя разработать расширение, которое будет работать с обоими типами сервисов. В этом случае необходимо разработать отдельные расширения для каждого типа сервиса: одно для картографического и второе для сервиса изображений.
Для разработки расширений необходимы знания по использованию ArcObjects в Java. Для этого также требуется понимание принципов REST и SOAP. Дополнительные модули, разработанные с помощью Java, могут быть развернуты на ArcGIS Server (Windows) и ArcGIS Server (Linux). Дополнительные модули, разработанные с помощью .NET, не могут быть развернуты на ArcGIS Server (Linux).
Кроме того, если вы хотите создавать пользовательские страницы свойств для расширений, помимо страниц, которые создаются автоматически, необходимо обладать опытом разработки Java Swing (для страниц ArcCatalog) или разработки веб-форм с помощью языка HTML и JavaScript (для страниц Менеджера).