I'm a software developer. In my world, when you bundle up a set of scripts or binaries to be run on another machine, your goal is usually to publish it to multiple environments. Sometimes the intention is that someone else will use your scripts or binaries inside of an application (libraries), and sometimes you're actually trying to publish an application. In the former case, you generally do all you can to make your tool as environment agnostic as possible, allowing users to pass in information about what resources to use (files, databases, web services). In the latter, you give the user some ability to configure the application so that it can connect to the correct resources. Making an application configurable like this still has uses even when you're only giving it to one client. In particular, it makes it simpler to have multiple testing copies of the application before you actually push to production. (E.g., one for developers to experiment on without bothering anybody, one for internal QA, and of course production.)

When I first heard about service definition files (.sd files) for geoprocessing services, that's what I thought they were supposed to do: let you bundle your code up so you could deploy it to different environments. However, I have found that when you use them, there are zero options for configuring anything at publish time. (See Specify geoprocessing service connection at publish and Prevent parameter defaults in service definition file). This means that a service definition is locked to a single environment, and you have to create a new one for each environment. As a result, I cannot see any way in which service definitions are useful for geoprocessing services since you must recreate them in each environment you want to deploy to.

What is their intended purpose?

What problem do they solve?

When should I be using them?


You make no reference to the ArcGIS Online Help and there I found a document entitled About service definition files that I think answers this.

I recommend reading it all, but it starts:

If you have limited access to the server—for example, in a cloud environment or secure environment—you can create a service definition file that can be shared with a server administrator for publishing at a later time. A service definition file contains information about service properties, capabilities, and the service type, which is encapsulated into one portable file. Optionally, you can configure the service definition file to include the data referenced by your GIS resource.

| improve this answer | |
  • That resource has left me with more questions than answers. In particular, I'm thrown off by this line: "Selecting this option creates a service definition file that will have to be configured to work with a server connection at the time of publishing." That seems to suggest there is some configuration option, but I sure can't figure out how to enable or use it. Could you elaborate? I'm a beginner in terms of ArcGIS, and what I have done, I've been consistently frustrated and confused by ESRI's designs. – jpmc26 Jun 18 '14 at 9:57
  • @jpmc26 I think you should revise your Question to focus it on that. – PolyGeo Jun 18 '14 at 10:20
  • I already have a separate question asking about configuring the connection. I asked this one because clearly there's some disconnect between what I thought SD files are for and what ESRI intends them to be used for; I was hoping to bridge that gap. Having a proper understand of what problem a tool is supposed to solve would help me better understand how to leverage it or whether I should be pursuing an entirely different option. – jpmc26 Jun 18 '14 at 10:23
  • I think I should clarify. When I said, "Could you elaborate?" I meant could you elaborate on your answer, not the specific text I quoted. – jpmc26 Jun 18 '14 at 12:51
  • There is no more to my Answer. Your Question asked the purpose of Service Definition files yet made no mention of the Help about them which would seem the logical starting point to try to learn that. – PolyGeo Jun 18 '14 at 20:29

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.