Tengo un enigma sobre el que estoy recibiendo consejos contradictorios sobre cómo proceder. Por lo tanto, me gustaría plantearlo a GIS-SE para obtener algunas respuestas justificadas.
Escenario:
-
El cliente tiene una aplicación de cartografía web. No quiere dividirla en varias aplicaciones más pequeñas. Aunque esto va en contra del enfoque actual de los mapas en la web (es decir, muchas aplicaciones de mapas web centradas en un mapa web principal), creo firmemente que para algunos usuarios, intentar replicar una aplicación SIG en la web está bien ( a veces ).
-
El cliente ha almacenado en caché la mayor cantidad de capas de su mapa base en servicios separados.
-
El cliente sigue necesitando un 600-700 capas en un dinámico servicio de mapas...
-
El servicio se publicará con todas estas capas apagado .
-
No se prevé que los usuarios enciendan más de 10-40 capas a la vez.
Imagino que tu reacción inicial a esto es similar a la mía (¡¿más de 600?! ¡¿WTF?!)
Sin embargo, el requisito está grabado en piedra y, ¿por qué no? Su anterior aplicación ArcIMS tenía una funcionalidad similar, así que ¿por qué no puede hacer lo mismo este nuevo producto ArcGIS Server? Los usuarios necesitan potencialmente ser capaces de comparar y realizar análisis en toda la gama de capas, incluso si las capas pertenecen a otros departamentos.
Antes de sacar conclusiones precipitadas, el cliente es un administrador de ArcGIS Server con experiencia.
Han administrado las 600 capas siguiendo todas las normas de buenas prácticas: por ejemplo, rangos de escala combinados con consultas de definición; anotación sobre etiquetado; generalización de capas complejas a pequeña escala; publicación como MSD; etc.
Problema :
¿Cuál es el mejor enfoque en este caso?
-
Publicar las 600 capas en un servicio de mapas dinámico
-
Dividir las capas en agrupaciones lógicas (hidrología, planificación, ecología, servicios públicos, etc.)
Si eliges el número 1, y tienes unas cuantas capas complejas activadas. Si desea activar una capa de puntos simples, entonces ArcGIS Server tendrá que volver a renderizar todas las capas que se muestran.
Si se opta por el número 2, cada vez que se haga una solicitud, la aplicación web podría tener que hacer varias solicitudes GET para ExportMaps desde los servicios de mapas individuales (¿es esto malo, o crea una carga adicional para ArcGIS Server con respecto al número 1?)
Y luego esto lleva a la configuración y puesta a punto para garantizar que todo sea lo más rápido posible. Podemos escalar el back-end de ArcGIS Server a múltiples hosts y tener un buen hardware para asentarlo.
Si eliges el número 1, puedes lanzar el número máximo de instancias que tu AGS puede manejar.
Si se opta por el número 2, supongo que se evaluará el rendimiento de los servicios de mapas (pruebas de carga y observación de los tiempos de espera) y se abordarán las instancias mínimas/máximas en consecuencia para garantizar que no haya un servicio que sea un "eslabón débil".
Actualmente me inclino por el enfoque #2, ya que mi cabeza sigue diciéndome que tener 600 capas en un servicio es una locura, pero si todas están desactivadas por defecto, realmente no hay problema.
Me encantaría conocer su opinión. Hazme saber si necesitas más información a través de los comentarios, pero no busco respuestas como "usa una aplicación de escritorio" o "edúcalos para que hagan las cosas de forma diferente".
De las discusiones en los comentarios, me faltó mencionar otra consideración. La aplicación dentro de la cual se consumirá el servicio, tiene la capacidad de seguridad a nivel de capa (a nivel de aplicación). Por lo tanto, el grupo de usuarios (que es bastante grande) se asigna a un rol particular, y ese rol tendrá acceso a las 600 capas completas. Los demás roles estarán limitados.
0 votos
Personalmente, formularía una pregunta al primer ministro en la que se expusiera el problema, aconsejaría sobre las mejores prácticas, aconsejaría una salida, y luego lo dejaría en sus manos. A fin de cuentas, en cuanto alguien diga: "pero así era", ya tienes las manos llenas. En esta situación, yo haría lo anterior, entonces has sido profesional, has hecho tu trabajo, y el resto depende de ellos. Aconsejaría, además, incluir en el correo electrónico a cualquier persona rica y famosa del lugar en el que trabajas, para asegurarte de que el consejo está ahí, y de que todo el mundo sabe cuál fue el consejo y quién lo dio.
0 votos
No dices el tipo de webapp que se utilizará para navegar por las capas, pero supongo que es del tipo openlayers. En ese caso ten en cuenta que el navegador también podría presentar problemas, ya que no emitirá más que algunos (entre 2 y 6) peticiones concurrentes al mismo servidor (incluyendo XHR, css y todo). Ver este artículo para los detalles y algunas alternativas (yo suelo ir a por los múltiples cnames cuando la TI es cooperativa): stevesouders.com/blog/2008/03/20/
0 votos
@Hairy - En realidad, creo que podemos cumplir los requisitos del cliente con ArcGIS Server y, aunque se están superando los límites de lo que es posible con AGS, sigue siendo posible, y todavía podemos recurrir a nuestro consejo anterior de dividir la aplicación en varias aplicaciones.
0 votos
@unicoletti - la webapp es nuestra - www.dekho.com.au - Entiendo las limitaciones del navegador, pero para mis dos escenarios, es o bien 1 petición GET, o potencialmente 4-6 peticiones GET.
1 votos
Sé que es factible, he trabajado con clientes que hacen lo mismo, pero no creo que sea recomendable, que son cosas distintas. Si deciden tener 10 clientes que quieren todas las 600 capas, a la vez, no importa lo que está ejecutando AGS, se caerá
0 votos
50 - 100 capas aconsejables y agruparlas en grupos genéricos "transporte", "adminbnds", etc. demasiadas capas en el navegador web matarán a los usuarios y acabarán por no utilizarlo.
2 votos
Ver pregunta relacionada
0 votos
@Hairy - Estoy de acuerdo. Sin embargo, hemos incorporado la seguridad a nivel de capa en el nivel de aplicación, por lo que la opción de activar las más de 600 capas se limitará al grupo que lo necesite. (Q editado)
0 votos
@Mapperz - sería estupendo si pudieras ampliar ese comentario con alguna prueba y colocarlo en una respuesta?
0 votos
Siguiendo con @unicoletti - si vas con múltiples servicios si es posible servirlos desde múltiples subdominios (incluso si todos resuelven al mismo recurso) ya que http limita las conexiones concurrentes a un (sub)dominio, no a un servidor. ¡Además, si usted tiene cualquier servicio con un montón de capas que realmente debe desactivar la actualización automática después de cada cambio TOC!