Extending ArcGIS Server


Summary This topic describes advanced programming techniques to enhance functionality and improve performance by extending ArcGIS Server.

About extending ArcGIS Server

ArcGIS Server includes a host of highly flexible and functional services. However, at times it might be necessary to extend ArcGIS Server services to add functionality that is not explicitly available with the existing service capabilities. Since ArcGIS Server uses the same ArcObjects that ArcGIS Engine and ArcGIS Desktop use, you can also utilize the breadth and depth of ArcObjects functionality in server context. In addition, many developers extend ArcGIS Server to optimize the performance of their client application. The goal is to minimize the number of ArcObjects calls between the client application and the geographic information system (GIS) server by encapsulating functionality in server-side components and exposing coarse-grained methods for client applications to call. 

The following two strategies extend the GIS server for this purpose:
  • Creating utility Component Object Model (COM) objects—Extending the GIS server with COM objects allows you to share your components across ArcGIS Server, ArcGIS Desktop, and ArcGIS Engine customizations. These utility COM objects do not need to be tied to any particular server object configuration or type, and can be used in an empty server context. This strategy does have limitations however. When extending the GIS server with a utility COM object, the object must be created at each request made on a particular server object or server context. This means that for pooled server objects, each time a request is made on a server object, the utility COM object must be created. If the COM object has a high initialization cost, this continual creation of the object can be prohibitive. Because the COM object is created for each request, you cannot use it to cache information as it is used. For more information, see Utility COM objects
  • Creating server object extensions (SOEs)—An SOE enhances the functionality of a service and takes advantage of the server object's lifecycle and resources. An SOE is initialized when the server object is created and managed for the duration of the server objects existence (explicit creation is not required). As a result, the initialization cost of creating the SOE is paid once when the server object and its extensions are initially created. SOEs are registered and configured with specific server objects. In addition, administration of an SOE through custom property dialog boxes can be enabled in Server administration applications (such as ArcCatalog or Manager). SOEs can also be accessed via standard ArcGIS Server Simple Object Access Protocol (SOAP) and Representational State Transfer (REST) service endpoints, which makes them available to non-ArcObjects based clients and expands access to rich ArcObjects functionality on the server. For more information, see Server object extensions (SOE).