I have a server object extension (SOE) that returns a list of legend items based on symbols that fall within a specified extent. This allows the client to update a legend to reflect on the symbols that fall within the map extent.

To do this requires access to renderers. This is simple with with mxd based mapservices, however Msd based mapservices don't support access to renderers. As a workaround I'm using IMapDocument to open the mxd and keep a reference to the layout as a member variable.

Is this safe?

Support for mxd mapservices will be deprecated at 10.1, so I really need to figure this out.


This video from the Dev Summit doesn't explicitly address this question. However, given how the printing gp service uses mxd files, this implies mxd access is safe. If it isn't, I suppose I could re-deploy my SOE as a gp service.


Here's a related question on CodeReview.Stackexchange.

  • Are there now after the DevSummit more informations about using fine-grained objects in SOE10.1? Specially using the ILayer and IPageLayout objects?
    – tomlux
    Mar 13 '11 at 13:59
  • Is that right that local DCOM connections (and creating a server context) will not be possible at all at 10.1?
    – Petr Krebs
    Mar 22 '11 at 17:50
  • @petr k, that's the way I read it. Mar 22 '11 at 17:54
  • here you can see news blogs.esri.com/Dev/blogs/arcgisserver/archive/2011/04/26/…
    – usergis
    Apr 27 '11 at 10:51

This is a great question. I've been, like many of us, using fine grained ArcObjects on the server to perform some of the more advanced tasks which cannot be done through the coarse-grained API.

Here's my two cents. The deprecation plans for ArcGIS 10.1 (I am sure you've seen the What are the deprecation plans for ArcGIS 10 and the upcoming release of ArcGIS 10.1 post, also do check out the comments under the post) are truly worrying. The way ESRI is trying to to go in the long run is quite clear - use the coarse grained APIs, use symbolization features available in the various web APIs (Silverlight, Flex etc.) and leverage geoprocessing on the server. In the light of this information, I am personally trying to turn away from fine-grained ArcObjects API as much as possible. This is of course not possible for many existing applications, which access individual layers, renderers (including custom layers and renderers), layout etc. heavily and in which a significant investment has been made.

So in short, no, I do not think accessing MXD-specific features on the server is safe in terms of future ArcGIS development.

  • 1
    thanks for adding the link. Another thing not clear in the doc is support for non-pooled services. Do they mean that support will end only for webadf non-pooled services, or for all non-pooled services? I'm using a non-pooled GP service for pdf exporting. Somewhere in arcobjects there's a memory leak. The easiest workaround is to make it non-pooled. Esri says pooled services scale better. In my case the opposite is true. Jan 27 '11 at 14:22
  • @kirk Non-pooled services are going away completely at 10.1
    – Philip
    Mar 23 '11 at 16:17

An Esri rep declined to post an answer here, but was kind enough to reply to me by email.

ArcGIS 10.1 will provide easier programmatic access to the renderers in a map underneath a map service, so you’ll be able to have an easier solution down the road. I believe there is a “road ahead” session at the Dev Summit that may show this, or you could ask the presenters about it at that time. For your 10.0 app, there’s probably no immediate need to change what you are doing if it is working for you.

  • I recommend attending that session. You can also find me or one of the other map service team members at the island for a detailed discussion. Feb 19 '11 at 7:05

If you open msd (xml zipped) you can see what information you have available...

For now I use same your technique I get mxd in same directory of msd for info not available in msd

  • Thanks nicogis, I hadn't realized msd's are zipped xml files. Feb 18 '11 at 14:07

Are there now after the DevSummit2011 more informations about using fine-grained objects in SOE10.1? Specially using the ILayer and IPageLayout objects?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.