Мне тоже нравится подход к конфигурации, кроме файла конфигурации, который может быть довольно большим.
Одна вещь, которую я заметил в конфигурации WCF, - это то, что вы можете делать из кода, который вы не можете делать в XML-конфигурации, не добавляя свои собственные пользовательские расширения. Другими словами, выполнение конфигурации в коде даст большую гибкость, конечно, вы также можете просто кодировать свои собственные расширения и использовать их из конфигурации.
Тем не менее, обратите внимание, что в Visual Studio есть то, что я бы назвал «ошибкой»: если вы начнете создавать свои собственные расширения и включать их в XML, то VS больше не будет любить ваш файл конфигурации и будет помечать их как ошибки, а затем, если вы попытаетесь добавить новую службу через мастера, она не сможет добавить конечную точку в конфигурацию.
Это своего рода продолжение моего собственного ответа:
После месяцев, проведенных в конфигурации xml, я все изменил, чтобы создать конечные точки и привязки в коде. Я нашел действительно хороший случай для того, чтобы иметь это в коде;
Если вы хотите иметь развертываемую / разделяемую .dll, содержащую клиентов WCF.
Так, например, если у вас есть CommonClients.dll, который содержит все ваши интерфейсы WCF и контракты для связи с каким-либо удаленным сервером, то вы не хотите также говорить «вот 100 строк xml, которые вы также должны отбросить в ваш app.config для каждого клиента, чтобы он работал ". Построение всего этого в коде в этом случае работает намного лучше.
Существует также «особенность» .NET 3.5, где, если у вас есть некоторые расширения wcf, вы должны указать полное имя сборки. Это означает, что если ваша сборка, содержащая расширения, изменяет номер версии, вы должны также изменить имя сборки в файле конфигурации. Предполагается, что в .NET 4 исправлено использование короткого имени сборки и полное имя не требуется.