Para ampliar un servicio de imágenes o de mapas (SOE o SOI), por lo general escribe el código que implementa algunas interfaces necesarias y realiza su lógica de negocio. Si está trabajando en Java, puede empezar a crear una extensión utilizando el arquetipo Maven de SOE o SOI. Si está trabajando en .NET, iniciará en Visual Studio con una plantilla del proyecto. Las plantillas garantizan que su extensión implementa las interfaces necesarias y pueden responder a las llamadas del servicio web de REST to SOAP utilizando las clases de SOESupport.
Puede encontrar instrucciones detalladas para la codificación de la extensión en la documentación de ArcGIS Enterprise SDK.
Consideraciones sobre los interceptores de objetos del servidor
Al crear interceptores de objetos del servidor (SOI), debe manejar todos los tipos de solicitudes de entrada, incluso aunque su SOI solo esté pensado para mejorar una o algunas de las muchas operaciones que hay disponibles en los servicios de mapas e imágenes. En esta sección se detallan las interfaces que necesita manejar y los enfoques disponibles dependiendo de si está implementando una funcionalidad relacionada o no con la seguridad.
Intercepción de solicitudes de servicio REST, SOAP y OGC
Los servicios de mapas e imágenes admiten tres tipos de solicitudes:
- solicitudes API REST
- solicitudes API SOAP
- Solicitudes OGC
Para que un SOI pueda interceptar estas solicitudes, debe implementar estas interfaces:
- IRESTRequestHandler para manejar solicitudes de API REST
- IRequestHandler para manejar solicitudes de API SOAP, incluidas las solicitudes realizadas por ArcGIS Pro
- IWebRequestHandler para manejar solicitudes OGC
Aunque la configuración de un servicio concreto no admita solicitudes OGC, debe manejar todas las interfaces anteriores. Según la lógica de negocio que esté implementando, hay dos enfoques generales que puede adoptar.
Nota:
Si un servicio de mapas o imágenes contiene teselas en caché, las solicitudes realizadas en estas teselas no pueden interceptarse.
Si va a implementar un SOI que va a realizar funciones de seguridad, se recomienda que empiece por implementar todas las interfaces anteriores y que bloquee todas las solicitudes. A medida que vaya implementando su código personalizado, podrá permitir de forma lógica el acceso mediante las interfaces anteriores. Si en principio no bloquea las solicitudes de entrada y después va concediendo acceso según lo desee, corre más riesgo de exponerse accidentalmente a vulnerabilidades de seguridad.
Si no va a implementar ninguna funcionalidad de seguridad, podría implementar las tres interfaces transfiriendo todas las solicitudes mediante la implementación estándar subyacente para permitir el funcionamiento normal. A continuación, vaya agregando lógica de negocio adicional a las operaciones que desee mejorar.
Cuando se configura un servicio con un SOI, el marco del servidor enruta todas las solicitudes de servicio al SOI. Es responsabilidad del SOI filtrar las solicitudes, delegar la solicitud a los objetos del servicio de mapas o de imágenes (si procede) y, a continuación, y de forma opcional, procesar aún más las respuestas antes de devolverlas al cliente.
Implementar control de acceso en el nivel de capa
Si va a implementar un control de acceso en el nivel de capa a través de un SOI, también deberá configurar el controlador de REST de ArcGIS GIS Server para desactivar el almacenamiento en caché de todos los recursos de capa incluidos en el servicio. Esto le permitirá interceptar las operaciones y filtrar las capas que no estén permitidas. Puede desactivarlo definiendo la propiedad disableCaching del servicio en true en el Directorio de administrador de ArcGIS GIS Server.
- Abra el Directorio de administrador de ArcGIS GIS Server e inicie sesión. La URL suele tener el formato https://gisserver.domain.com:6443/arcgis/admin.
- Haga clic en servicios y después en el nombre del servicio que desee. Si no lo ve en la lista, puede que esté dentro de una carpeta en este directorio.
- Haga clic en editar.
- En la sección properties del servicio JSON, agregue la propiedad disableCaching y defina su valor en true, por ejemplo:
"properties": { ... "disableCaching": "true", ... },
- Haga clic en Guardar cambios.
Crear un archivo .soe.
Las extensiones (SOE o SOI) se encapsulan en un archivo .soe. El archivo .soe contiene toda la información necesaria para registrar su extensión en ArcGIS GIS Server. Si está utilizando .NET, el archivo .soe se crea al crear el proyecto. Si utiliza Java, creará el archivo .soe creando proyecto de SOE o SOI de Maven. El archivo .soe también se puede crear mediante el comando mvn install, que se puede ejecutar manualmente o integrar en scripts de creación automática.
Las extensiones desarrolladas con ArcGIS Enterprise SDK tienen el sufijo _ent incorporado a su nombre de archivo .soe. Por ejemplo, una extensión con el nombre SimpleRESTSOE tendrá el nombre de archivo de salida SimpleRESTSOE_ent.soe.