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 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 lo hacen utilizando un código personalizado que funcione con datos y mapas geoespaciales.
- 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 creadas con ArcGIS Maps SDK for JavaScript, ArcGIS Maps SDK, etc.
Extensiones de objeto del servidor
Las SOE son adecuadas si desea crear 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). Ofrecen las siguientes ventajas:
- Puede exponer una SOE como un servicio web REST o SOAP, lo que permite invocarlas a clientes personalizados creados sobre las API de cliente de ArcGIS y cualquier otro cliente de REST o SOAP. 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 negocios de forma muy eficiente, lo que proporciona un entorno ideal para ejecutar sus llamadas con rapidez.
Puede desarrollar una SOE si desea exponer una funcionalidad que no está disponible de ninguna otra manera o que debe ejecutarse con mucha rapidez.
Consideraciones antes de desarrollar una SOE
Para usar las SOE se requieren conocimientos sobre desarrollo web, herramientas de desarrollo de ArcGIS y lenguajes de programación como Java o un lenguaje basado en .NET, como C#. Una SOE desarrollada con Java se puede implementar para ArcGIS Server en Windows y Linux, mientras que una SOE desarrollada con .NET solo se puede implementar para ArcGIS Server en Windows.
Las SOE se pueden desarrollar mediante el uso de ArcGIS Enterprise SDK. Al utilizar este SDK, si desea escribir páginas de propiedades de Manager personalizadas de ArcGIS Server para sus extensiones además de aquellas que se generan de forma automática, debe tener conocimientos sobre el desarrollo de formularios web con HTML y JavaScript.
Una SOE solo se puede desarrollar para un tipo de servicio concreto, ya sea un servicio de mapas o un servicio de imágenes. Por ejemplo, no es posible desarrollar una SOE genérica que funcione tanto con un servicio de mapas como con un servicio de imágenes. En este caso, deberá desarrollar SOE individuales para cada tipo de servicio: una para un servicio de mapas y otra para un servicio de imágenes.
Antes de desarrollar una SOE, debe considerar algunas alternativas. Una alternativa para desarrollar una SOE puede ser crear un modelo de geoprocesamiento que cumpla con su lógica de negocios y, después, publicarlo como un servicio. Puede utilizar ModelBuilder para arrastrar, soltar y conectar interactivamente las herramientas necesarias, en lugar de escribir un código de lógica de negocios personalizado. Los servicios de geoprocesamiento también le permiten ejecutarlas de forma asincrónica, lo cual 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 personalizados en el pasado para diversas tareas que ahora son realizables sin ellos. Para obtener un análisis detallado de las formas de abordar los desafíos de la representación cartográfica en la red sin tener que desarrollar extensiones, consulte Alternativas para extensiones de objeto del servidor.
Interceptores de objetos del servidor
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.
También puede desarrollar SOI para implementar una lógica de negocios personalizada, como requisitos de seguridad o auditoría que no cumplen el servicio de imágenes o de mapas de forma predeterminada, por ejemplo:
- 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.
- 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.
- Respuestas posteriores al procesamiento. Se podría agregar información adicional procedente de sistemas de empresa separados no compatibles con ArcGIS Server a las respuestas salientes, 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 entrantes 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.
Si desea realizar una o varias 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.
Consideraciones antes de desarrollar una SOI
Para usar los SOI se requieren conocimientos sobre desarrollo web, herramientas de desarrollador de ArcGIS y lenguajes de programación como Java o un lenguaje basado en .NET, como C#. Una SOI desarrollada con Java se puede implementar para ArcGIS Server en Windows y Linux, mientras que una SOI desarrollada con .NET solo se puede implementar para ArcGIS Server en Windows.
Las SOI se pueden desarrollar mediante el uso de ArcGIS Enterprise SDK. Al utilizar este SDK, si desea escribir páginas de propiedades de Manager personalizadas de ArcGIS Server para sus extensiones además de aquellas que se generan de forma automática, debe tener conocimientos sobre el desarrollo de formularios web con HTML y .
Una SOI solo se puede desarrollar para un tipo de servicio concreto, ya sea un servicio de mapas o un servicio de imágenes. Por ejemplo, no es posible desarrollar una SOI genérica que funcione tanto con un servicio de mapas como con un servicio de imágenes. En este caso, deberá desarrollar SOI individuales para cada tipo de servicio: una para un servicio de mapas y otra para un servicio de imágenes.
Antes de desarrollar un SOI, plantéese si esa es la funcionalidad que necesita. Si lo que desea es ampliar su servidor con nuevas prestaciones, plantéese utilizar una SOE o modelos y scripts de geoprocesamiento. Los SOI son adecuados para agregar un nuevo comportamiento o lógica de negocios sobre las operaciones existentes de ArcGIS Server de forma que sea transparente para las aplicaciones de cliente existentes.