Components of an ArcGIS Server system

The ArcGIS family of products--ArcGIS Desktop, ArcGIS Engine, and ArcGIS Server--are all built from ArcObjects. Casual users of ArcGIS Desktop are probably not aware of, nor do they care about, ArcObjects. They simply run ArcMap, for example, and edit their map. It's not until they want to start customizing ArcGIS Desktop or building their own applications that they become more familiar with ArcObjects.

The main difference between running a desktop application and one based on a GIS server is in where the ArcObjects components reside. For desktop applications, the objects needed for the application are instantiated and run in the application itself on the local machine. For instance, when you start ArcMap and open a map document, the ArcMap application instantiates the objects that allow you to draw the map, add layers, edit the layout, and so on. Essentially, all the objects stored in the map document are rehydrated for use during that ArcMap session. When you save the map, the current state of the objects used during the session is written to the map document for later use.

Unlike desktop applications, clients of a GIS server-based application access the ArcObjects components remotely. You can think of your GIS server as the container that hosts the objects for all client applications that need to use them in much the same way an ArcMap session hosts the objects for an individual user. However, with the GIS server, objects are shared between clients. Because of this, the way clients use the GIS resources running on the server is a little different. When you create an application that accesses a GIS server, you need to follow the prescribed coding guidelines for accessing the objects running on the server. These guidelines are presented and described in the Developer Help system.

If you're familiar with ArcGIS Desktop, then you're also familiar with the GIS resources you work with in the desktop environment. For example, if you want to display your GIS data, you do so through maps and globes. If you want to find locations by their address, you use an address locator. If you want to do some analysis, you use the geoprocessing tools in the toolbox. Each of these items encapsulates some level of GIS functionality. Fundamentally, the GIS functionality is exposed through a specific set of ArcObjects components that implement the functionality.

On the GIS server, instead of working with, for instance, map documents, globe documents, and address locators, you work with map services, globe services, and geocode services. GIS resources that have been made available on the server are collectively referred to as services. Actually, you'll still use map documents, globe documents, and address locators, as these are the sources for the services you host on the GIS server. Thus, if you want to share a map you've made on the GIS server, you use the map document to define the map service that runs on the server.

The main purpose of a GIS server is to host services and distribute them to client applications that need to use them. Additionally, the GIS server provides a set of tools that allow you to manage the services; for example, you can use the ArcGIS Server Manager application to add and remove services.

It's useful to understand how a GIS server system is put together so that you can build applications that effectively utilize ArcObjects running in a server environment. This topic serves as an introduction to the components that compose a GIS server.

The following image shows the ArcGIS Server system architecture:

An ArcGIS Server system is made up of some of the following components: