Developing with ArcGIS


Summary
As an ArcGIS developer, you can develop several different customizations; that is, add-ins, stand-alone applications, and custom components. This topic helps you determine the type of development that is right for your customization.


About developing with ArcGIS

ArcGIS development, like any development, should follow a plan. The following steps will help you be successful as an ArcGIS developer:
  1. Define the problem that the programming task will solve—Geographic information system (GIS) technology is used to answer questions such as "What is the problem that your development is going to solve?"
  2. Decide on the kind of customization to create—ArcGIS has various extension points. Before you begin writing your customization, you need to know which of these points you will be targeting. For more information, see the Determining what type of customization to create section in this topic. 
  3. Locate the correct ArcObjects for the functionality your customization requiresArcObjects are the components that provide all the GIS functionality to your customization. There are many ArcObjects, but they are grouped into functional areas. To help determine your starting point and where in the ArcObjects object model you need to focus, see Learning ArcObjects.
Some customizations require you to use multiple areas of ArcObjects. Treat each of these as a sub-task of your customization and focus on one task at a time.
  1. Develop your customization—The following steps provide a basic outline for many customizations:
    1. Create a Visual Studio project.
    2. Reference the required ArcObjects assemblies, identified in Step 3.
    3. Create the customization framework by creating your stand-alone application, setting up your add-in and the associated .esriaddinx file, or implementing the required ArcObjects interfaces. Use the Visual Studio integrated development environment (IDE) integration utilities. The templates and wizards will help you stub out the basis of your customization type. They are documented in the "Developer utilities" section of this Help system in the "Visual Studio integration" area.
    4. Add code, including the GIS functionality through ArcObjects. You will need to license your application to provide access to ArcObjects. Topics on licensing are included in the topics about the different types of customizations. If you are using an extension, see How to use extensions.
    5. Compile the source into an executable (EXE) for a stand-alone application, .esriaddin for an add-in, or a dynamic-link library (DLL) for an extension to ArcObjects. 
  2. Test your customization—Verify that your application works as expected, and make sure that you handle any common user errors appropriately.
  3. Deploy your customization—Your completed customization is more beneficial if it can be shared and used by others. Topics on deploying customizations are included in the sections of this Help system about each type of customization. For example, the "Building stand-alone applications" section contains a "Deploying stand-alone applications" subsection.

Determining what type of customization to create

As a developer, you have several development entry points. Once you know the problem that your development is going to solve, you can determine what type of customization to build.
Before you develop an ArcGIS customization, be sure this is the right development path for your project requirements. Other customizations can be developed by customizing the ArcGIS application user interface (UI) or by writing Python scripts and applications. For an introduction to the available functionality through those entry points, and references to more information about them, see ArcObjects Help for .NET developers.
If you want to make your collection of tools on a toolbar, or change the layout of tools and dockable windows in an ArcGIS for Desktop application (ArcMap, ArcCatalog, ArcGlobe, or ArcScene), you can configure the UI to match your requirements. To do this, you can drag and drop within the applications. Since ArcObjects programming is not required, this software development kit (SDK) does not cover this type of customization. For more information, see About configuring the user interface.
If you have a set of geoprocessing tools to run, or a series of maps to produce, consider Python scripting. Since .NET ArcObjects programming is not required, this SDK does not cover this type of customization. For more information, see A quick tour of ArcPy and Geoprocessing scripts for map document management and output.
If you have a user that wants a focused application that addresses a particular task or workflow, you can create a stand-alone application. The application can do the following:
  • Use the ArcGIS Engine controls to provide an interactive experience, either with a look and feel similar to that available in the ArcGIS for Desktop applications, or one with a completely different look and feel, even by using the Windows Presentation Foundation (WPF) and its controls.
  • Create graphical user interface (GUI) applications with embedded  GIS functionality.
  • Provide data processing or analysis without a GUI component. Such applications can be scheduled to create a daily process.
Topics to assist you in making a stand-alone application can be found in the "Building stand-alone applications" section of this Help system. For a starting point, see Building stand-alone applications.
To make a customization that plugs into an ArcGIS for Desktop application, and is easy to share, consider making an add-in. While they are easy to build and share, add-ins do have limited capabilities and cannot be used to access all of Esri's extensibility points. Add-ins are only supported for the following extension points:
  • Buttons and tools
  • Combo boxes
  • Menus and context menus
  • Multi-items
  • Toolbars
  • Tool palettes
  • Dockable windows
  • Application extensions
  • Editor extensions
For assistance in developing add-ins, see the "Building add-ins for ArcGIS for Desktop" section of this Help system and Building add-ins for ArcGIS for Desktop.
Although easy to build and share, add-ins have limitations. They only provide access to the extension points in the preceding list. To build a customization for a different extension point, such as a custom renderer or plug-in data source, extend ArcObjects by developing a custom component. Since sharing add-ins does not require administrator privileges or registration, extend ArcObjects if you have an external dependency—libraries, assemblies, services—that require registration or administrative intervention. Topics to assist you in extending ArcObjects can be found in the "Extending ArcObjects" section in the "Learning ArcObjects" section of this Help system. As a starting point, see Extending ArcObjects
If you are creating a GIS Web application with ArcGIS for Server, the Web Application Developer Framework (ADF) provides Web controls and convenience classes to work with multiple data sources. Developing with the .NET Server ADF is documented in the .NET Server ADF SDK, and is not covered in this Help system.
While ArcGIS for Server includes a host of highly flexible functional services, you can access additional functionality by working directly with ArcObjects; or you can optimize the performance of your client application by encapsulating functionality in server-side components and exposing coarse-grained methods for client applications to call. Creating a server object extension (SOE) provides this capability. For more information, see What is a server object extension?.
Topics to assist with this development are located in the "Developing with ArcGIS for Server" section.