Migrar una extensión de objeto del servidor .NET a 10.1

Migrar una extensión de objeto del servidor (SOE) .NET a 10.1 requiere que copie la mayor parte del código de la SOE existente en las plantillas de Visual Studio 10.1 para las SOE de REST y SOAP. La razón por la que necesita hacer esto es porque las plantillas 10.1 contienen la lógica para hacer un archivo .soe. Este archivo es nuevo en 10.1 y le permite implementar su SOE en ArcGIS for Server en un solo paso. El archivo .soe se crea cuando se crea el proyecto.

Otra ventaja de la plantilla 10.1 es que las referencias ya están apuntando a ensamblados de interoperación primarios incluidos en el ArcObjects SDK 10.1. Si su proyecto requiere de cualquier referencia diferente a las que se incluyen en la plantilla, debe agregar manualmente esas referencias.

Las SOE creadas en versiones 10.0 y anteriores que dependen de las conexiones de ArcGIS Server Local (DCOM) no se pueden utilizar en la versión 10.1. Estas SOE se deben cambiar para actuar como servicios Web REST y SOAP.

Los siguientes son los pasos para migrar una SOE de 10.0 a 10.1:

Pasos:
  1. Si previamente registró las SOE en su equipo, délo de baja mediante un comando como regasm <ruta a DLL> /codebase /u.
  2. Abra Visual Studio 2010 y haga clic en Archivo > Nuevo > Proyectar.
  3. En el árbol Plantillas instaladas, expanda Visual C# >ArcGIS > Extensiones de objeto del servidor.
  4. En la parte superior del cuadro de diálogo Nuevo proyecto, elija .NET Framework 3.5 desde el menú desplegable.
  5. Elija entre las plantillas REST o SOAP, escriba un nombre y la ubicación de la SOE y, a continuación, haga clic en Aceptar.
  6. Agregue cualquier referencias y directivas que requiera su proyecto y no están incluidas en la plantilla.
  7. En el código de plantilla, modifique ServerObjectExtension del atributo .NET para que contenga los recursos, la descripción, el nombre de visualización, las propiedades y las arquitecturas del servicio Web admitido de la SOE. Estos son los tipos de valores que se establecen en el código de proceso de registro de la SOE antes de 10.1. Un ejemplo C# puede verse de la siguiente manera:
    [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 anterior tiene dos recursos disponibles: GetCommonInfo y GetSecretInfo. Sin embargo, solo GetCommonInfo está habilitado por defecto.

    Del mismo modo, existen dos propiedades en esta SOE: la Propiedad A, que establece un valor predeterminado de 500 y la Propiedad B, que establece un valor predeterminado de Ciudades. Todas las propiedades inicialmente son tratadas como cadenas de caracteres.

  8. Copie todo el código de clase (pero no la declaración de clase) desde la SOE de una versión anterior a 10.1 y reemplace el código correspondiente en la plantilla. El código de clase reutilizable en 10.1 es idéntico al código en 10.0, excepto que las SOE de 10.1 no se derivan de ServicedComponent y tampoco necesitan una referencia a System.EnterpriseServices. Debe quitar estos elementos si hace un copiado y pegado completo. Puede utilizar la plantilla 10.1 y las muestras como guía.

    El ejemplo a continuación muestra lo que debe quitar y reemplazar con su código de 10.0 al migrar una SOE de REST:

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

    Si la SOE de 10.1 tiene un nombre diferente que la SOE 10.0, deberá actualizar el nombre de la SOE en el constructor:

    public MySampleSOE()
            {
                soe_name = this.GetType().Name;
                logger = new ServerLogger();
                reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler;
            }
    
  9. Guardar la solución y cree el proyecto. Si se crea correctamente, se creará un archivo .soe bajo el directorio bin del proyecto.
  10. Implemente la SOE en ArcGIS Server mediante las instrucciones en Implementar una extensión de objeto del servidor.
9/12/2013