¿Aumenta la productividad del desarrollador con la plataforma ArcGIS?

20

Somos un pequeño equipo de desarrolladores .NET. Tenemos una amplia experiencia en SIG, y ninguno de nosotros es nuevo en el desarrollo de software / bases de datos o administración de sistemas. Tenemos títulos técnicos y muchos años de experiencia en la industria. Asistimos a las cumbres de desarrolladores de Esri.

La tecnología de Esri, principalmente ArcGIS Server, ArcSDE y ArcObjects, desempeña un papel pequeño pero necesario en todo el software que desarrollamos. A pesar del estado minoritario de ESRI en nuestra pila de tecnología, pasamos una cantidad excesiva de tiempo solucionando errores elusivos, elaborando soluciones, descifrando sus vagos mensajes de error, rastreando problemas de rendimiento y procesos de reciclaje.

Por lo general, nuestros problemas se deben a errores genuinos, manejo de excepciones deficiente, limitación de decisiones de diseño / arquitectura, falta de documentación, inestabilidad o alguna combinación de los mismos. (Estoy hablando de la pila de ESRI aquí).

Desde la perspectiva de un gerente de proyecto, estoy muy preocupado por la productividad del equipo. Esto nos cuesta mucho tiempo. No tenemos tiempo para aprender cada idiosincrasia de la pila de ESRI, pero aún necesitamos hacer las cosas. (No puedo vivir con eso, no puedo vivir sin él).

¿Qué sugerencias pragmáticas tiene para aumentar la productividad del desarrollador con ESRI en la mezcla?

No estoy buscando sugerencias sobre pilas de tecnología alternativa.

nw1
fuente
2
¿Le importaría preguntar la razón detrás del uso de productos ESRI en su software?
OptimizePrime
Los desarrolladores responden bien si amenaza con tacharlos por cada error que encuentre. En una nota más seria: su siguiente comentario es normal cuando usa productos ESRI. <blockquote> Dedicamos una cantidad excesiva de tiempo a solucionar errores elusivos, crear soluciones, descifrar mensajes de error vagos, rastrear problemas de rendimiento y procesos de reciclaje. </blockquote>
CaptDragon 05 de
@capdragon "Pasamos una enorme cantidad de tiempo necesario para solucionar errores difíciles de alcanzar, la elaboración de soluciones, descifrar los mensajes de error vagos, seguimiento de problemas de rendimiento y procesos de reciclaje" - que se aplica a casi todo el desarrollo de software e instalaciones ..
geographika
1
@geographika: la palabra clave es "excesiva", en relación con todas las otras tecnologías con las que trabajamos.
nw1
1
Necesitaría que sus desarrolladores vean The Last Lecture , con atención al concepto de "paredes de ladrillo" ... Las paredes de ladrillo no están ahí para mantenernos fuera. Las paredes de ladrillo están ahí para darnos la oportunidad de mostrar cuánto queremos algo. Porque las paredes de ladrillo están ahí para detener a las personas que no lo quieren lo suficiente.
Kirk Kuykendall

Respuestas:

10

Para el rendimiento, parece que la mejor solución es escribir código proxy C ++ en ArcObjects como se menciona en este artículo . En el ejemplo, ESRI proporciona una eliminación del uso intensivo de la interoperabilidad COM y proporciona un aumento de rendimiento de 6x.

ESRI también ofrece sugerencias / mejores prácticas para manejar los mensajes de error COM crípticos , y una explicación de los códigos de error HRESULT .

Más allá de estos, muchos de los problemas de configuración están relacionados con Windows, por lo que un buen conocimiento de la administración del servidor de Windows, IIS, servicios de Windows, registros de eventos de Windows, registro, objetos COM registrados, etc.

Además de estos artículos, hay varios enfoques de desarrollo más genéricos que pueden resultarle útiles.

Enfoques de desarrollo de software

  • Utilice los servicios web tanto como sea posible, para ambos datos geográficos (WMS, WFS, servicios ArcGIS REST). Esta separación hace que las cosas sean más fáciles de depurar y mantener.
  • Siempre que sea posible, instale sistemas para limpiar las instalaciones de Windows. Cree scripts de instalación para que pueda recrear todo el sistema desde cero sin tener que depender de la memoria y los procesos manuales. Las máquinas virtuales son perfectas para esto.
  • En la medida de lo posible, mantenga separados .NET y DLL puros con código específico de ESRI por separado
  • Podría comenzar a intentar hacer más "trabajo pesado / procesamiento" en la base de datos, por ejemplo, directamente en SQL Server 2008 con las nuevas clases de Geometría y Geografía

Comunicación

  • Publique los errores esquivos en GIS SE / StackOverflow, y si encuentra las soluciones, publíquelas también, he encontrado respuestas anteriores que escribí yo mismo mientras buscaba el mismo error que había olvidado por completo 6 meses después.
  • Mantenga notas e idealmente permita que otras personas del equipo puedan buscarlas. He probado wikis pero la falta de imágenes pegadas fue un obstáculo suficiente para evitar que lo haga regularmente. Actualmente uso Microsoft OneNote, que es perfecto para realizar un seguimiento de errores, URL, capturas de pantalla. Se puede compartir también.
  • Para enfoques técnicos más detallados, publíquelos en un blog. Parece haber mucho menos intercambio de detalles en el mundo de ESRI, posiblemente debido al temor de que otros aprovechen comercialmente, sin embargo, un blog decente es un buen anuncio para los servicios de su empresa.
geographika
fuente
¿Era el -1 para la respuesta, o tenía la audacia de mencionar que desarrollar y configurar OSS GIS no es exactamente sin las mismas dificultades?
geographika
7

Me temo que no se obtendrán muchas buenas respuestas de esta pregunta. Pero es bueno ... el rendimiento de los productos ESRI ha sido una preocupación mía durante algún tiempo.

Mi comentario anterior hace referencia a la necesidad de productos ESRI o puede migrar a una pila de tecnología diferente. Si está desarrollando productos ESRI para integrarse con los sistemas ESRI para atraer a los usuarios de ESRI, entonces está atascado con una base de código ESRI que se ha portado o contorsionado para adaptarse a las plataformas de desarrollo y usuario modernas.

Alguien de ESRI, corríjame si me equivoco. La mayoría de las bibliotecas .NET de ESRI son envoltorios para objetos COM, de los cuales hay gastos generales para acceder y ofrecen informes y manejo de errores ambiguos en el mejor de los casos. Comprender los objetos COM subyacentes y su participación en la base de su código lo ayudará a diseñar mejor su código para adaptarlo a su operación. Este hecho me ayudó a aumentar el rendimiento en mis scripts de Python 10 veces. ¡Lo que una vez tomó 40 minutos ahora toma 4 y con un pequeño ajuste ahora se reduce a 2.5 minutos!

He escuchado cosas buenas con ArcGIS 10, pero no contenga la respiración.

Si está utilizando productos ESRI para proporcionar una solución SIG dentro de su software, entonces adhiérase a uno de los muchos proyectos de código abierto que se ofrecen y cree desde allí. @capdragon ofrece un conjunto de aplicaciones de este tipo que le proporcionará una gran cantidad de flexibilidad y escalabilidad con un equipo de soporte de desarrolladores afines en la nube para ayudarlo.

El desarrollo con productos ESRI es un juego de campo mental con ambigüedad, hacks oscuros e inconsistencia entre los principales jugadores si está tratando de hacer algo innovador y fuera del procedimiento operativo estándar de ESRI.

¡Quiero que alguien demuestre que estoy equivocado!

OptimizePrime
fuente
Para responder a su pregunta, estamos atascados con ella por muchas razones para enumerar.
nw1
ArcObjects .NET SDK son envoltorios de llamadas en tiempo de ejecución casi enteramente para el COM subyacente. Silverlight / WPF SDK no está basado en COM.
James Schek
@James: corrígeme si me equivoco, pero ¿el Silverlight SDK no es solo un cliente API REST? ¿Y no está la API REST construida en ArcObjects?
nw1
@OptimizePrime: ArcGIS 10 hizo grandes avances en muchas áreas que mencionas y lo que han anunciado para 10.1 incluso más allá de eso. Están eliminando por completo el soporte DCOM en 10.1.
wilbev
1
@welbev Muchas gracias por esta información. A ESRI le ha llevado algo de tiempo avanzar en esto, pero es agradable escuchar que están abordando estas preocupaciones.
OptimizePrime
7

En mi experiencia trabajando con ESRI, cuanto más lejos pueda alejarse de ArcObjects, más probabilidades tendrá de tener éxito. En términos prácticos, eso significa que si puede usar las API REST más nuevas para hacer lo que está haciendo, siempre debe acceder a ArcGIS de esa manera.

Parecen haber aprendido algo de la falla total que fue el ADF web en Java / .net, y las API REST están mucho más simplificadas y tienen un historial comparativamente excelente al trabajar sin mucho alboroto. La forma más sencilla de acceder a la API REST es si está trabajando en Javascript / Flex / Silverlight ya que ESRI proporciona bibliotecas para aquellos que son bastante buenos, pero es solo una interfaz REST estándar y puede hablar con casi cualquier cosa.

Hay cosas que no puedes hacer de esa manera, pero no puedo enfatizar lo suficiente que es más agradable trabajar con casi cualquier otra cosa en la pila de ESRI. Cuando tiene que trabajar con ArcObjects (o los ArcObjects envueltos en .net), todo lo que realmente puede hacer es crear una documentación extremadamente buena en su código y rezar para que no rompan cosas en el próximo parche (que probablemente lo harán, conociéndolos) )

Tridus
fuente
6

Mantenga actualizado el mantenimiento de su soporte. Lo único más frustrante que tratar de resolver un problema de código es tratar de resolverlo sin la ayuda de las personas que escribieron el código. Y no recibirá ayuda alguna de ESRI si no tiene un acuerdo de mantenimiento con ellos. (Es posible que obtenga ayuda de este sitio o de los foros de ESRI, pero eso está muy lejos de hablar directamente con ellos).

Mantente al tanto de los paquetes de servicio y parches. No se garantiza que no tendrá problemas si lo hace, pero puede responder con seguridad, "Sí", cuando el soporte le pregunte si tiene instaladas las últimas versiones / actualizaciones.

Contribuya con sus soluciones a la comunidad (blogs, preguntas aquí, etc.). Si suficientes personas hicieran eso, imagino que sucederían dos cosas: una, más desarrolladores estarían al tanto de los problemas y tendrían una gran oportunidad de eliminarlos más rápidamente y dos, los problemas serían resueltos más rápido por ESRI (nada como un aumento vidrio para que las hormigas se muevan, ¿verdad?

Michael Todd
fuente
4

También soy un desarrollador de ESRI que lucha constantemente con este producto a diario. No tengo soporte de mantenimiento, por lo que no recibo muchos comentarios de los desarrolladores.

Es realmente muy muy frustrante cuando algo "Simplemente no funciona" (en oposición a IJW - Simplemente funciona), no importa cuánto lo intentes.

Lo que intento es ganar la pelea:

  • Haz preguntas (mucho)
  • Lea la referencia del SDK de ArcObjects (mucho, una y otra vez)
  • Experimenta con diferentes configuraciones

El camino más corto hacia un resultado es preguntarle a alguien que ya tuvo el mismo problema, por lo tanto, si alguien se metió en ese problema y encontró una solución, lo más probable es que se lo digan.

La documentación es buena, pero carece de descripciones de elementos clave y detalles importantes, por lo tanto, regrese a 1.

La experimentación también funciona. Crea un programa de consola y prueba. Los marcos de Unit Testing pueden ayudarlo a hacer todo dentro de un IDE, pero pruebe diferentes escenarios.

La biblioteca de ESRI más problemática o más extraña es la Geodatabase y puede dar resultados extraños, dependiendo de las condiciones, así que trate de dominarla.

George Silva
fuente
1

Intente usar PostGIS> GeoServer> OpenLayers. Vea cómo funciona eso para su equipo.

CaptDragon
fuente