Programmatic Versus Administrative Configuration
The two techniques shown so far for configuring the client and the service complement each other. Administrative configuration gives you the option to change major aspects of the service and the client post-deployment, without the need to rebuild or redeploy. The major downside of administrative configuration is that it is not type-safe and you will discover configuration errors only at runtime.
Programmatic configuration is useful when the configuration
decision either is completely dynamic—i.e., when it is taken at runtime
based on the current input or conditions—or is static and never changes,
in which case you might as well hardcode it. For example, if you are
interested in hosting in-proc calls only, you can hardcode the use of
the NetNamedPipeBinding and its
configuration. However, by and large, most clients and services resort
to using a config file.