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.
Respuestas:
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
Comunicación
fuente
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!
fuente
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) )
fuente
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?
fuente
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:
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.
fuente
Intente usar PostGIS> GeoServer> OpenLayers. Vea cómo funciona eso para su equipo.
fuente