Migration d'une extension d'objet serveur .NET vers la version 10.1

La migration d'une extension d'objet serveur (SOE) .NET vers la version 10.1 requiert la copie de la majeure partie du code SOE existant dans les modèles Visual Studio 10.1 pour les SOE REST ou SOAP. La raison pour laquelle vous devez procéder ainsi est que les modèles de la version 10.1 contiennent la logique d'empaquetage nécessaire à la création d'un fichier .soe. Ce fichier est nouveau dans la version 10.1 ; il permet de déployer la SOE dans ArcGIS Server en une seule étape. Le fichier .soe est créé lorsque vous créez le projet.

Un autre avantage du modèle 10.1 est que les références pointent déjà vers les assemblys d'interopérabilité principales fournies avec le SDK ArcObjects 10.1. Si votre projet nécessite des références autres que celles incluses dans le modèle, vous devez ajouter ces références manuellement.

Les SOE créées dans les versions 10.0 et antérieures qui s'appuient sur les connexions locales à ArcGIS for Server (DCOM) ne peuvent pas être utilisées dans la version 10.1. Ces SOE doivent être remaniées pour faire office de services Web REST ou SOAP.

Voici la procédure de migration d'une SOE de la version 10.0 à la version 10.1 :

Etapes :
  1. Si la SOE était précédemment inscrite sur votre machine, désinscrivez-la à l'aide d'une commande telle que regasm <chemin vers la DLL> /codebase /u.
  2. Ouvrez Visual Studio 2010 et cliquez sur Fichier > Nouveau > Projet.
  3. Dans l'arborescence Modèles installés, développez Visual C# > ArcGIS > Extensions d'objet serveur.
  4. Dans le haut de la boîte de dialogue Nouveau projet, sélectionnez .NET Framework 3.5 dans le menu déroulant.
  5. Choisissez d'utiliser les modèles REST ou SOAP, tapez un nom et un emplacement pour votre SOE, puis cliquez sur OK.
  6. Ajoutez les références et directives dont votre projet a besoin autres que celles incluses dans le modèle.
  7. Dans le code du modèle, modifiez l'attribut .NET ServerObjectExtension de manière à ce qu'il contienne les fonctions, la description, le nom d'affichage, les propriétés, ainsi que les architectures de service Web prises en charge pour votre SOE. C'est le type de valeurs que vous définissez dans le code d'inscription de la SOE avant la version 10.1. Voici un exemple de code C# :
    [ServerObjectExtension("MapServer",
            AllCapabilities = "GetCommonInfo;GetSecretInfo",
            DefaultCapabilities = "GetCommonInfo",
            Description = "An example SOE for the help system",
            DisplayName = "My Sample SOE",
            Properties = "PropertyA=500;PropertyB=Cities",
            SupportsREST = true,
            SupportsSOAP = false)]
    

    La SOE ci-dessous compte deux fonctions disponibles : GetCommonInfo et GetSecretInfo. Cependant, seule GetCommonInfo est activée par défaut.

    De la même façon, deux propriétés sont présentes dans cette SOE : la propriété A, qui prend par défaut la valeur de 500, et la propriété B, qui prend par défaut la valeur Cities. Toutes les propriétés sont traitées comme des chaînes au départ.

  8. Copiez le code de classe entier (mais pas la déclaration de classe) depuis la SOE de la version antérieure à 10.1 SOE et remplacez le code correspondant dans le modèle. Le code de classe standard de la version 10.1 est identique au code de la version 10.0, à la différence que les SOE 10.1 ne proviennent pas de ServicedComponent et qu'elles ne nécessitent pas de référence à System.EnterpriseServices. Supprimez ces éléments si vous effectuez un copier-coller complet. Vous pouvez utiliser le modèle et les exemples de la version 10.1 comme guide.

    L'exemple ci-après illustre ce que vous devez supprimer et remplacer par votre code 10.0 lors de la migration de la SOE REST :

    public class MySampleSOE : IServerObjectExtension, IObjectConstruct, IRESTRequestHandler
        {
           // Delete 10.1 template code and paste your 
           //   corresponding 10.0 code here.
        }
    

    Si la SOE 10.1 porte un nom différent de la SOE 10.0, vous devez mettre à jour le nom de la SOE dans le constructeur :

    public MySampleSOE()
            {
                soe_name = this.GetType().Name;
                logger = new ServerLogger();
                reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler;
            }
    
  9. Enregistrez la solution et créez le projet. Une version réussie crée un fichier .soe dans le répertoire bin du projet.
  10. Déployez votre SOE dans ArcGIS for Server en suivant les instructions mentionnées à la rubrique Déploiement d'une extension d'objet serveur.
9/18/2013