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