Хотя создание службы WCF в качестве библиотеки классов дает вам большую гибкость, эта гибкость обходится дорого, и ошибочно полагать, что более гибкое решение всегда является предпочтительным решением или что менее гибкое решение по-детски или подходит только для "простых учебных целей".
Подавляющее большинство служб WCF размещаются в виде веб-служб и никогда не будут развернуты другим способом.
Вот три преимущества использования приложения-службы WCF по сравнению с библиотекой классов WCF:
Если вы создадите свой веб-сервис как библиотеку классов, файлы конфигурации будут файлами app.config, а не файлами web.config. Файлы App.config изначально не поддерживают несколько файлов конфигурации, а config преобразует, как это делают файлы web.config. Если вы хотите, чтобы config преобразовывал файлы app.config, вы должны использовать стороннее решение, такое как Slow Cheetah.
Когда пришло время опубликовать свой сайт, если вы используете приложение-службу WCF, вы можете в полной мере воспользоваться Web Deploy (http://www.iis.net/downloads/microsoft/web-deploy), который является мощным и гибким способом публикации вашего решения в IIS.
Если вы решите автоматизировать сборку и развертывание для непрерывной интеграции с TFS, придет время, когда вы захотите автоматизировать публикацию своей службы. Если вы используете службу WCF, вы можете настроить TFS для запуска Web Deploy, который объединит ваши файлы web.config в соответствии с целевой конфигурацией сборки, выполнит добавочную публикацию, разрешит публикацию без прав администратора на сервере и другие преимущества. Если вы используете библиотеку классов WCF, то вам придется написать собственное решение рабочего процесса для объединения файлов app.config, использования xCopy для развертывания и, как правило, более сложного процесса автоматизации развертывания.
Таким образом, более гибкое решение, как это часто бывает, достигается за счет потери поддержки конкретного инструмента. Если, как и большинство решений служб WCF, ваше приложение всегда будет размещаться в IIS, вы можете рассмотреть возможность использования этой поддержки с помощью приложения службы WCF, а не библиотеки классов WCF.