No estoy tan familiarizado con QGIS, pero me pregunto cómo se compara con ArcGIS en términos de extensibilidad. Desafortunadamente, parece haber al menos algunas compensaciones entre extensibilidad y rendimiento. La mejor manera que he encontrado para tener una idea de la extensibilidad de ArcGIS es echar un vistazo a las categorías de componentes COM de Esri que se encuentran en el registro.
Cada categoría representa un lugar donde los usuarios pueden registrar archivos DLL que contienen clases que implementan una interfaz Esri. Hay muchas categorías. Estas categorías también contienen comida para perros : Esri las usa no solo para descubrir personalizaciones de terceros, sino también para la funcionalidad inmediata. Si bien esto proporciona un nivel de personalización muy fino, también significa que todos estos granos finos necesitan ser descubiertos y cargados en tiempo de ejecución. No estoy seguro de cuál es el costo de reubicación , pero debe ser significativo.
C:\Program Files (x86)\ArcGIS\Desktop10.0\Bin\Categories.exe
Cuando crea un archivo DLL en Visual Studio, hay un lugar donde puede especificar la dirección base para cargar el archivo DLL. Dado que hay tantos dlls de diferentes tamaños que se cargan, saber esto con anticipación para una personalización de ArcObjects sería muy difícil. Aún así, me pregunto si podría crearse un archivo de configuración que indique dónde debe cargarse el dll en la memoria. Si es así, una vez que un usuario tiene arcmap ejecutándose con los dlls cargados que normalmente usará, podría ejecutar una rutina que escribiría las direcciones base de dll en un archivo de configuración. De esa manera, cuando se inicie arcmap, podría evitar la reubicación al cargar en esas direcciones. Por otra parte, tal vez con 64 bits, esto no importará.
En 10.0, Esri introdujo complementos. Las categorías de complementos son mucho más pequeñas, y el descubrimiento no depende del registro de Windows. En cambio, los dlls de complementos se comprimen y se colocan en una carpeta conocida. No estoy seguro de cómo esto compara el rendimiento en cuanto a los dlls descubiertos a través del registro de Windows. Creo que el objetivo principal era permitir la instalación por no administradores.
Supongo que la pregunta se refiere al producto de escritorio. El nuevo producto ArcGIS Runtime es mucho más liviano. Lo escuché descrito como un reemplazo para MapObjects. Será interesante ver cómo evoluciona. Si Esri introduce la extensibilidad para WPF Runtime, espero que no usen el mismo mecanismo de descubrimiento utilizado por Visual Studio cuando llena la lista de ensamblados. La primera vez que haga clic en "Agregar referencia ..." se ha vuelto extremadamente lento.