Using Server object extensions (SOEs) and Server object interceptors (SOIs), it is possible to extend ArcGIS Server map and image services with custom Java or .NET code that is executed on the GIS server through a client application.
An SOE creates new service operations to extend the base functionality of a map or image service. SOEs are appropriate if you need to expose custom functionality that is not available in any other manner or that needs to be executed quickly. An example use-case for an SOE would be a situation where an ArcObjects code must be used to accomplish a task that cannot be done with a geoprocessing task. Before embarking on developing an SOE, look closely to see if out-of-the-box tools can accomplish the task at hand. Also, remember that custom Python scripts can accomplish many tasks that only a few years ago were attainable only by using through ArcObjects.