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