OK folks... we have been discussing a lot about fundamentals and components of a GIS software, some GIS programming and database (geodatabase) issues. Lets look into more programming details and software architecture of an ESRI ArcGIS software. Am not revealing any company secrets here... because many of these things can be found in support.esri.com or EDN (Esri Developer Network). Their explanation maybe cryptic tho...
ArcObjects are programming classes that is used to build ArcGIS, you already know this from my previous blogs. If you don't go back and read my blogs.. it explains in simplified terms. The core language used to build ArcObjects is C++ and also makes use of COM (Microsoft Component Object MOdel). Well there are pros and cons of using COm, we can discuss it later.
I think of COM as an infrastructure... i.e. if you build a city, you need roads, parks, facilities etc... the material to build these infrastuctures could be cement, tar or steel. Something like building city infrastructures... COM is an infrastruture to build ArcGIS.... and materials used to build COM is the programming language (i.e. C++, dotNET, VB etc). Simple right??
So why are there lots of DLLs and EXEs?? What is the relationship between the DLLs and COM?? What is inside these DLLs?? Using the City (i.e. ArcGIS / software) that has Roads infrastructure (i.e. COM) example... you have workers and jobs that serve different purpose to build these roads... and used in different ways. These different jobs, work and actions to build a road network can be assumed as DLLs. DLLs are actually libraries of classes that hold specific software functions and tools.
The ArcGIS architecture is divided into COM and then subdividided again into libraries (DLLs, OCXs and EXEs). Examples of libraries are esriGeometry or esriArcMap... they hold specific functions and tools that cater to modular GIS functions. OK... that sounds cyrptic.. its actually kinda easy. Lets say you open ArcMap and display some maps / feature classes... the software is actually using functions, methods and tools whithin esriArcMap library to do all that. Its calling specific computer processes to run on your machine.
The libraries in ArcMap can define namespaces (something like class categories) for all components within it... depending on your chosen API:
- Type Library: COM
- .NET Interop Assembly: dotNET
- Java Package: JAVA
- Header File: C++