Puede ampliar los servicios de imágenes y mapas de ArcGIS Server (incluidas las extensiones de los servicios de imágenes y mapas, como los servicios de entidades) con una lógica personalizada que se puede ejecutar en los clientes de ArcGIS. Hay dos maneras de ampliar estos tipos de servicios:
- Las extensiones de objeto de servidor (SOE) le permiten crear nuevas operaciones de servicio para ampliar la funcionalidad base de los servicios de imágenes o mapas. 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 de cliente de ArcGIS. 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.
- Los interceptores de objetos del servidor (SOI) le permiten interceptar solicitudes para operaciones integradas existentes de servicios de imágenes o mapas. Esto le permite ejecutar una lógica personalizada y modificar el comportamiento de estos servicios sustituyendo las operaciones existentes de forma que no implique ninguna interrupción para los clientes existentes. Estos clientes pueden ser aplicaciones incorporadas en la API de ArcGIS para JavaScript, ArcGIS Runtime SDK, etcétera.
En las siguientes secciones se describe con más detalle cada uno de estos tipos.
Extensiones de objeto de servidor (SOEs)
Las SOE son adecuadas si desea crear nuevas operaciones de servicio para ampliar la funcionalidad base de los servicios de imágenes y mapas. (incluidas las extensiones de los servicios de imágenes y mapas, como los servicios de entidades). Las SOE ofrecen las siguientes ventajas:
- Puede exponer una SOE como un servicio web de Transferencia de estado representacional (REST) o Protocolo de acceso de objeto simple (SOAP), lo que permite a los clientes personalizados compilarlas en la parte superior de las API de cliente de ArcGIS y en otros clientes de REST o SOAP 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 de cliente de ArcGIS comprenden, la mayoría en formato JSON.
- Cuando crea una SOE, proporciona métodos menos precisos que realizan el trabajo en ArcGIS 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.
Podría desarrollar una SOE si quisiera exponer una funcionalidad ArcObjects que no esté disponible de ninguna otra manera o que necesite ejecutarse con mucha rapidez. Las SOE son para desarrolladores con experiencia y requieren del conocimiento de varias plataformas de desarrollo. Los ArcObjects SDKs para Java y Microsoft .NET Framework contienen varias muestras de SOE que puede examinar.
¿Necesita una SOE?
Para las SOE se requiere conocimientos de desarrollo web, de ArcObjects y de lenguajes de programación, como Java o un lenguaje basado en .NET, como C#. Además, deben pasar por 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.
Interceptores de objetos del servidor (SOI)
Los SOI son adecuados si desea cambiar el comportamiento de las operaciones de servicios de imágenes o mapas existentes (incluidas las extensiones de los servicios de imágenes y mapas, como las operaciones de servicios de entidades). Por ejemplo, puede cambiar el comportamiento de una consulta o de una solicitud de exportación de imágenes de mapa. Estos son algunos ejemplos de lo que se puede hacer con un SOI:
- Agregar una marca de agua a todas las imágenes de un mapa
- Proporcionar seguridad en el nivel de capa
- Permitir o no el acceso a operaciones específicas según el rol del usuario
¿Necesita una SOI?
Para las SOI se requiere conocimientos de desarrollo web, de ArcObjects y de lenguajes de programación, como Java o un lenguaje basado en .NET, como C#. Además, deben pasar por un proceso de implementación para que estén disponibles en su servidor. Antes de desarrollar un interceptor de objetos del servidor, debe plantearse si esta es la funcionalidad que necesita.
Si lo que desea es ampliar su servidor con nuevas prestaciones, plantéese utilizar un SOE o modelos y secuencias de comando de geoprocesamiento. Los SOI son adecuados para agregar funcionalidades o comportamientos nuevos sobre las operaciones existentes de ArcGIS Server de modo que sean transparentes para las aplicaciones cliente existentes.
Si desea realizar una o más tareas con una serie de extensiones, puede hacerlo mediante SOI. Es posible encadenar varios SOI juntos en uno o más servicios. La lista y el orden de ejecución de los SOI de la cadena se pueden modificar en cualquier momento.
Puede decidir crear uno más SOI si necesita implementar una lógica de negocio personalizada, como requisitos de seguridad o de auditoría que no quedan cubiertos con el servicio de imágenes o mapas predeterminado. Por ejemplo:
- Incluir una marca de agua en todas las imágenes de mapa creadas mediante el servidor. Se puede crear una serie de SOI para superponer una marca de agua personalizada en imágenes de mapa creadas mediante el servidor. Esto permite a las organizaciones o a las compañías de alojamiento garantizar una personalización adecuada en todas las imágenes.
- Auditar y registrar todas las solicitudes. con fines de depuración, se puede crear una serie de SOI para registrar información detallada sobre las solicitudes entrantes, como la información completa sobre los parámetros de entrada y las credenciales de usuario que se transfieren con la solicitud.
- Respuestas posteriores al procesamiento. Se podría agregar información adicional procedente de sistemas de empresa que no son compatibles con ArcGIS Server a las respuestas de salida a fin de unir los datos espaciales con otros tipos de datos de inteligencia empresarial.
- Control de acceso en las operaciones para los servicios de mapa. ArcGIS Server solo permite activar operaciones de servicio para todos los usuarios del servicio o bien desactivar el acceso por completo. Mediante una serie de SOI se pueden filtrar las solicitudes de entrada según el rol del usuario, a fin de implementar el acceso al servicio en las operaciones.
- Control de acceso en las capas para los servicios de mapa. ArcGIS Server solo admite el acceso a los datos en el nivel de servicio; o bien el usuario tiene acceso completo a todos los datos de servicio o bien no tiene acceso alguno. Es posible implementar una serie de SOI para filtrar el acceso a determinadas capas o incluso para filtrar datos dentro de una capa según el rol del usuario.
Lo que necesita saber para desarrollar una extensión
El desarrollo de una extensión 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. Las extensiones desarrolladas con Java se pueden implementar en ArcGIS for Server (Windows) y en ArcGIS for Server (Linux). Las extensiones desarrolladas con .NET solo se pueden implementar en ArcGIS for Server (Windows).
Una extensión solo se puede desarrollar para un tipo de servicio concreto; ya sea un servicio de imágenes o de mapas. Por ejemplo, no es posible desarrollar una extensión genérica que funcione con un servicio de imágenes y con un servicio de mapas. En este caso, deberá desarrollar extensiones individuales para cada tipo de servicio; una para un servicio de mapas y otra para un servicio de imágenes.
Adicionalmente, si desea escribir páginas de propiedades personalizadas para sus extensiones 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).