Skip To Content

Introduction à l’extension de services

Vous pouvez étendre les services d’imagerie et de carte ArcGIS Server (notamment des extensions de services d’imagerie et de carte, telles que les services d’entités) avec une logique personnalisée qui peut s’exécuter sur des clients ArcGIS. Vous pouvez étendre ces types de services de deux façons :

  • Les extensions d’objet serveur (SOE) vous permettent de créer des opérations de service afin d’étendre les fonctions de base des services d’imagerie ou de carte. Les SOE sont appropriées si vous devez exécuter une logique métier bien définie ne pouvant pas facilement être accomplie à l’aide des API clientes ArcGIS. La plupart des SOE utilisent du code personnalisé pour travailler avec les cartes et les données géospatiales.
  • Les intercepteurs d’objet serveur (SOI) vous permettent d’intercepter les demandes pour les opérations intégrées existantes des services d’imagerie ou de carte. Vous pouvez ainsi exécuter une logique personnalisée et modifier le comportement de ces services en remplaçant les opérations existantes de manière transparente pour les clients existants. Ces clients peuvent être des applications conçues avec ArcGIS API for JavaScript ou ArcGIS Runtime SDK, entre autres.

Précisions à connaître pour le développement d'une extension

Le développement d’une extension nécessite de connaître les outils de développement ArcGIS faisant appel aux langages de programmation Java ou .NET. Cela nécessite également de comprendre les principes REST ou SOAP. Les extensions développées avec Java peuvent être déployées sur ArcGIS Server, sous Windows et Linux. Les extensions développées avec .NET peuvent être déployées sur ArcGIS Server uniquement sous Windows.

Une extension peut être développée uniquement pour un type de service particulier : un service de carte ou un service d’imagerie. Par exemple, vous ne pouvez pas développer une extension générique qui fonctionne à la fois avec un service de carte et avec un service d’imagerie. Dans ce cas, vous devez développer une extension différente pour chaque type de service : une pour un service de carte et une autre pour un service d’imagerie.

Il est possible de développer des SOE et des SOI à l’aide des SDK Esri. Chaque SDK met à votre disposition des outils, une documentation et des exemples pour les langages de programmation .NET et Java.

  • Utilisez les SDK ArcObjects (pour .NET et pour Java) afin de développer des extensions pour les services de carte et d’imagerie (notamment les extensions de service de carte telles que les services d’entités) publiés depuis ArcMap. Si, lorsque vous utilisez ces SDK, vous souhaitez écrire des pages de propriétés personnalisées pour vos extensions en plus des pages générées automatiquement, vous devez connaître le développement Windows Forms, le développement Java Swing (pour les pages ArcCatalog) ou le développement de formulaires web en HTML et en JavaScript (pour les pages du gestionnaire).
  • Utilisez ArcGIS Enterprise SDK afin de développer des extensions pour les services de carte (notamment les extensions de service de carte telles que les services d’entités) publiés depuis ArcGIS Pro. Si, lorsque vous utilisez ce SDK, vous souhaitez écrire des pages de propriétés ArcGIS Server Manager personnalisées pour vos extensions en plus des pages générées automatiquement, vous devez connaître le développement de formulaires Web en HTML et en JavaScript.

Extensions d’objets serveur

Les extensions d’objet serveur (SOE) sont appropriées si vous souhaitez créer des opérations de service afin d’étendre les fonctions de base des services d’imagerie et de carte (notamment les extensions de services d’imagerie et de carte telles que les services d’entités). Les SOE présentent les avantages suivants :

  • Vous pouvez proposer une SOE en tant que service web REST ou SOAP, ce qui permet aux clients personnalisés créés sur les API clientes ArcGIS et tout autre client REST ou SOAP de les invoquer facilement. En fait, vos SOE REST s'affichent dans le répertoire des services ArcGIS et peuvent proposer les types d'objet courants que les API clientes d'ArcGIS comprennent, principalement au format JSON.
  • Lorsque vous créez une extension d’objet serveur, vous fournissez des méthodes grossières qui exécutent des tâches sur ArcGIS Server, plutôt que de passer un grand nombre d’appels depuis le client vers le serveur. Les SOE encapsulent très efficacement la logique métier, ce qui fournit un environnement parfaitement adapté à l’exécution rapide de vos appels.

Vous pouvez développer une SOE pour présenter des fonctions non disponibles autrement ou à exécuter très rapidement. Les SOE sont destinées aux développeurs expérimentés et requièrent une connaissance de plusieurs plates-formes de développement. ArcObjects SDKs pour Java et Microsoft .NET Framework contiennent plusieurs exemples de SOE que vous pouvez examiner.

Avez-vous besoin d'une extension d'objet serveur ?

Les SOE requièrent une connaissance du développement web, des outils de développement ArcGIS et des langages de programmation, tels que Java, ou d’un langage de type .NET, tel que C#. Ils doivent également passer par un processus de déploiement pour être mis à disposition sur votre serveur. Avant de développer une extension d'objet serveur, envisagez de choisir d'autres options plus simples.

Le moyen le plus simple d’éviter de développer une SOE peut consister à créer un modèle de géotraitement exécutant votre logique métier et à le publier en tant que service. Vous pouvez utiliser ModelBuilder pour glisser-déplacer et connecter les outils nécessaires de manière interactive plutôt que d’écrire le code d’une logique métier personnalisée. Les services de géotraitement vous permettent également de procéder à une exécution asynchrone. Vous pouvez alors lancer une tâche, passer à autre chose et y revenir plus tard pour vérifier les résultats.

L'un des inconvénients des services de géotraitement réside dans leur impact relativement important sur la mémoire. De plus ils peuvent s'exécuter plus lentement que les extensions d'objet serveur. Si vous n'exécutez un processus que quelques fois par jour, cela ne pose pas de problème. En revanche, si vous exécutez un processus de nombreuses fois par jour, ou si beaucoup d'utilisateurs l'exécutent simultanément, il peut valoir la peine de prendre le temps de créer une extension d'objet serveur.

De nombreux développeurs ont écrit par le passé du code personnalisé pour différentes tâches qui sont désormais accessibles sans ce code. Pour en savoir plus sur la résolution de problèmes de cartographie web sans recours au développement d’extensions, reportez-vous à la rubrique Alternatives aux extensions d’objet serveur.

Intercepteurs d’objet serveur

Les intercepteurs d’objet serveur (SOI) sont appropriés si vous souhaitez modifier le comportement des opérations de services de carte ou d’imagerie existants (notamment les extensions de services d’imagerie et de carte telles que les opérations de service d’entités). Vous pouvez par exemple modifier le comportement d'une requête ou d'une demande d'exportation d'images cartographiques.

Vous pouvez également développer des SOI pour implémenter une logique métier personnalisée, notamment pour répondre à des critères de sécurité ou d’audit que le service d’imagerie ou de carte par défaut ne remplit pas.

  • Audit et consignation de toutes les requêtes : à des fins de débogage, vous pouvez créer une série de SOI qui consigne des informations détaillées sur les requêtes entrantes, telles que des informations complètes sur les paramètres en entrée et les informations d'identification utilisateur transmises avec la requête.
  • Incluez un filigrane sur toutes les images cartographiques créées par le serveur. Une série de SOI peut être créée pour surimposer un filigrane personnalisé sur des images cartographiques créées par le serveur. Cela permet aux organisations ou aux sociétés d'hébergement d'assurer une personnalisation correcte sur toutes les images.
  • Réponses de post-traitement : des informations complémentaires issues de systèmes métier distincts non pris en charge par ArcGIS Server peuvent être ajoutées aux réponses sortantes afin de joindre des données spatiales à d’autres types de données Business Intelligence.
  • Contrôle d’accès au niveau des opérations pour les services de carte : ArcGIS Server prend uniquement en charge l’activation des opérations de service pour tous les utilisateurs du service ou la désactivation complète de l’accès. Une série de SOI peut filtrer les demandes entrantes en fonction du rôle de l’utilisateur afin d’implémenter l’accès au service au niveau des opérations.
  • Contrôle d’accès au niveau des couches pour les services de carte : ArcGIS Server prend uniquement en charge l’accès aux données au niveau des services ; soit l’utilisateur bénéficie d’un accès complet à toutes les données des services, soit l’utilisateur n’a aucun accès. Une série de SOI peut être implémentée pour filtrer l'accès à des couches spécifiques ou même filtrer des données au sein d'une couche en fonction du rôle de l'utilisateur.

Si vous souhaitez accomplir une ou plusieurs tâches à l’aide d’une série d’extensions, vous pouvez utiliser les intercepteurs d’objet serveur (SOI). Plusieurs SOI peuvent être enchaînés sur un ou plusieurs services. Vous pouvez à tout moment modifier la liste des SOI et leur ordre d'exécution dans la chaîne.

Avez-vous besoin d'un SOI ?

Les SOI requièrent une connaissance du développement web, des outils de développement ArcGIS et des langages de programmation, tels que Java, ou d’un langage de type .NET, tel que C#. Ils doivent également passer par un processus de déploiement pour être mis à disposition sur votre serveur. Avant de développer un SOI, demandez-vous si vous avez besoin de cette fonction.

Si vous souhaitez renforcer votre serveur par de nouvelles fonctions, vous pouvez utiliser un SOE ou des modèles de géotraitement et des scripts. Les SOI conviennent pour ajouter une nouvelle logique métier ou un nouveau comportement, en complément des opérations ArcGIS Server existantes, de manière transparente pour les applications client existantes.