Skip To Content

Extensions de code

L’extension d’un service de carte ou d’imagerie (SOE ou SOI) implique habituellement la rédaction du code qui met en œuvre des interfaces requises et exécute votre logique métier. Si vous travaillez dans Java, vous pouvez commencer par créer une extension à l’aide de l’archétype Maven du SOE ou du SOI. Si vous travaillez dans .NET, vous démarrerez dans Visual Studio avec un projet de modèle. Avec les modèles, vous avez la garantie que votre extension met en œuvre les interfaces requises et qu’elle peut répondre à des appels de service Web REST ou SOAP à l’aide des classes de SOESupport.

Pour ce faire, reportez-vous aux instructions relatives aux codages d’extension disponibles dans la documentation d’ArcGIS Enterprise SDK.

Points à prendre en compte concernant les intercepteurs d’objet serveur

Lorsque vous créez des intercepteurs d’objet serveur (SOI), vous devez gérer tous les types de requêtes entrantes même si votre SOI n’est destiné qu’à améliorer une ou quelques-unes des opérations accessibles avec les services d’imagerie et de carte. Cette section décrit les interfaces que vous devez gérer, ainsi que les méthodes qui sont à votre disposition selon que vous implémentez des fonctionnalités ayant trait à la sécurité ou non.

Interception de requêtes de services REST, SOAP et de l’OGC

Les services d’imagerie et de carte prennent en charge trois différents types de requêtes :

  • requêtes API REST
  • requêtes API SOAP
  • Requêtes de l’OGC

Pour qu’un SOI intercepte ces requêtes, vous devez mettre en œuvre les interfaces suivantes :

  • IRESTRequestHandler pour gérer les requêtes de l’API REST
  • IRequestHandler pour gérer les requêtes de l’API SOAP, y compris les requêtes faites par ArcGIS Pro
  • IWebRequestHandler pour gérer les requêtes de l’OGC

Même si la configuration d’un service en particulier ne prend pas en charge les requêtes de l’OGC, vous devez gérer toutes les interfaces ci-dessus. Selon la logique métier que vous implémentez, vous pouvez adopter deux méthodes générales.

Remarque :

Si un service de carte ou d’imagerie contient des tuiles en cache, les requêtes à destination de ces tuiles ne peuvent pas être interceptées.

Si vous implémentez un SOI dont les fonctions sont sécuritaires, il est recommandé de commencer par implémenter toutes les interfaces ci-dessus et par bloquer toutes les requêtes. Lorsque vous implémentez votre code personnalisé, vous pouvez autoriser logiquement l’accès via les interfaces ci-dessus. Si vous ne commencez pas par bloquer les requêtes entrantes et autorisez ensuite l’accès selon les besoins, le risque de présenter accidentellement une faille de sécurité est accru.

Si vous n’implémentez pas de fonctions de sécurité, vous pouvez implémenter les trois interfaces en transmettant toutes les requêtes à l’implémentation standard sous-jacente afin d’autoriser les fonctions normales. Ajoutez ensuite la logique métier supplémentaire aux opérations que vous voulez optimiser.

Lorsqu’un service est configuré avec un SOI, la structure du serveur achemine toutes les requêtes du service vers le SOI. Le SOI est chargé de filtrer les requêtes, de déléguer la requête aux objets de service d’imagerie ou de carte (le cas échéant), puis de traiter les réponses avant de les renvoyer au client.

Mettre en œuvre le contrôle d’accès au niveau des couches

Si vous mettez en œuvre le contrôle d’accès au niveau des couches via un SOI, vous devez également configurer le gestionnaire REST d’ArcGIS GIS Server pour désactiver la mise en cache des ressources de toutes les couches incluses dans le service. Cela vous permet d’intercepter les opérations et de filtrer les couches qui ne sont pas autorisées. Vous pouvez désactiver cette fonction en définissant la propriété disableCaching du service sur true dans le répertoire d’administrateur d’ArcGIS GIS Server.

  1. Ouvrez le répertoire d’administrateur ArcGIS GIS Server et connectez-vous. L’URL est souvent formatée https://gisserver.domain.com:6443/arcgis/admin.
  2. Cliquez sur services, puis sur le nom du service souhaité. S’il n’apparaît pas dans la liste, recherchez-le dans un dossier de ce répertoire.
  3. Cliquez sur Modifier.
  4. Dans la section properties du fichier JSON du service, ajoutez la propriété disableCaching et définissez sa valeur sur true ; par exemple :
    "properties": {
      ...
      "disableCaching": "true",
      ...
     },
  5. Cliquez sur Enregistrer les mises à jour.

Création d’un fichier .soe

Les extensions (SOE ou SOI) sont encapsulées dans un fichier .soe. Le fichier .soe contient toutes les informations nécessaires pour inscrire votre extension auprès d’ArcGIS GIS Server Si vous utilisez .NET, le fichier .soe est créé lors de la génération de votre projet. Si vous utilisez Java, vous créerez le fichier .soe en concevant le projet SOE ou SOI Maven. Le fichier .soe peut également être créé à l’aide de la commande mvn install, qui peut s’exécuter manuellement ou être intégrée à des scripts de génération automatisés.

Le suffixe _ent est ajouté au nom de fichier .soe des extensions développées avec le SDK d’ArcGIS Enterprise. Ainsi, une extension nommée SimpleRESTSOE adopte le nom de fichier en sortie SimpleRESTSOE_ent.soe.