¿Qué es una extensión de objeto del servidor?
Las extensiones de objeto del servidor (SOE) le permiten extender la funcionalidad de base de ArcGIS for Server. La mayoría de SOE hacen esto al utilizar el código de ArcObjects para trabajar con los datos y mapas SIG. ArcObjects son los componentes esenciales con los que se construye ArcGIS y que le permiten contar con la mayor flexibilidad para escribir funciones SIG.
Las SOE son apropiadas si tiene alguna lógica de negocios bien definida a realizar, lo que no se logra fácilmente al utilizar las API web de ArcGIS. Las SOE tienen las siguientes ventajas:
-
Puede exponer una SOE como un servicio web de Transferencia de estado representacional (REST) y/o Protocolo de acceso de objeto simple (SOAP), lo que permite a los clientes compilarlas en la parte superior de las API web de ArcGIS para invocarlas con facilidad. De hecho, sus SOE de REST se mostrarán en el Directorio de servicios de ArcGIS y pueden exponer los tipos de objeto típicos que las API web de ArcGIS comprenden, la mayoría en formato JSON.
-
Cuando crea una SOE, proporciona métodos menos precisos que realizan el trabajo en ArcGIS for Server, en lugar de hacer un gran número de llamadas del cliente al servidor. Las SOE encapsulan la lógica de ArcObjects de forma muy eficiente, proporcionando un entorno ideal para ejecutar sus llamadas con rapidez.
Puede desarrollar una SOE si desea exponer la funcionalidad de ArcObjects que no está disponible de ninguna otra manera (a través de herramientas de geoprocesamiento de uso inmediato o de servicios de ArcGIS for Server) o que sea necesario ejecutar de forma muy rápida.
Las SOE son para desarrolladores con experiencia y requieren del conocimiento de varias plataformas de desarrollo. Los SDK de ArcObjects para Java y Microsoft .NET Framework contienen varias muestras de SOE que puede examinar.
Las SOE están diseñadas principalmente para extender los servicios de mapas.
Lo que necesita saber para desarrollar una SOE
El desarrollo de una SOE requiere de conocimiento sobre el uso de ArcObjects a través de Java o los lenguajes de programación .NET. También requiere una comprensión de los principios de REST o SOAP.
Adicionalmente, si desea escribir páginas de propiedades personalizadas para sus SOE además de aquellas que se generan de forma automática, debe tener un conocimiento sobre el desarrollo de formularios de Windows o Java Swing (para páginas de ArcCatalog) o sobre el desarrollo de formularios web utilizando Lenguaje de marcado de hipertexto (HTML) y JavaScript (para páginas de administrador).
¿Necesita una SOE?
Las SOE pueden requerir conocimiento sobre el desarrollo de servicios Web y ArcObjects y deben pasar a través de un proceso de implementación para que estén disponibles en su servidor. Antes de desarrollar una extensión de objeto del servidor, debe considerar algunas alternativas más fáciles.
La alternativa más simple para desarrollar una SOE puede ser crear un modelo de geoprocesamiento que cumple con su lógica comercial, después publicarlo como un servicio. Puede utilizar ModelBuilder para arrastrar, soltar y conectar interactivamente las herramientas necesarias en vez de escribir un código ArcObjects. Los servicios de geoprocesamiento también permiten la ejecución asincrónica, que le permite iniciar un trabajo, hacer algo más, y volver más tarde para comprobar los resultados.
Una desventaja de los servicios de geoprocesamiento es que tienen una huella de memoria relativamente grande y es posible que su ejecución sea más lenta que las SOE. Si está ejecutando un proceso solamente unas pocas veces al día, este podría no ser un problema. Sin embargo, si está ejecutando un proceso muchas veces al día, o con muchos usuarios concurrentes, puede valer la pena invertir el tiempo para crear una SOE.
Muchos desarrolladores han escrito códigos ArcObjects en el pasado para varias tareas que ahora están disponibles sin ArcObjects. Para obtener un análisis detallado de las formas de enfrentar los desafíos de la representación cartográfica en la red sin utilizar ArcObjects, consulte Alternativas para extensiones de objeto del servidor.