В настоящее время в нашем решении 12 проектов WCF. Каждый проект по сути своей конечной точки. Например, проект WCF «Заказ» является конечной точкой Order.svc. Эти 12 конечных точек представлены одним проектом WebHost. Проект WebHost имеет 12 файлов .svc, указывающих на каждую соответствующую сборку / пространство имен.
Мой вопрос вращается вокруг использования ОДНОГО проекта (одна сборка ... одна DLL) против нескольких проектов (несколько сборок ... несколько DLL). Каковы преимущества / недостатки, если таковые имеются? Конечный результат тот же ... у вас есть проект WebHost, который предоставляет эти конечные точки, указывающие на сборку / пространство имен. За исключением того, что вам просто нужно управлять одним .dll против 12 .dll в каталоге bin.
Для меня преимущества одного проекта:
Поддерживаемость - вместо 12 проектов, каждый из которых имеет несколько ссылок на наши интерфейсы, контракты на данные, утилиты и т. Д., У нас есть один проект, в котором ссылки установлены в ОДНОМ месте. Затем мы можем развернуть одну DLL и использовать балансировщик нагрузки для равномерного распределения. Даже если мы явно размещаем 3 службы на сервере (то есть 4 сервера), если сервер выходит из строя, балансировщик нагрузки может настроить, а остальные 3 сервера будут иметь то, что им нужно, и позаботятся обо всем автоматически. (Я предполагаю, что то же самое верно и для 12 DLL. Просто убедитесь, что все 12 DLL на каждом сервере).
Время сборки - меньше проектов = быстрее время сборки. Visual Studio не нужно выполнять столько ссылок и копий .dll везде. Более быстрое время сборки = более продуктивный разработчик, а также более быстрая сборка и развертывание.
В настоящее время у меня есть пара коллег, обеспокоенных «тесным объединением» всех наших служб WCF в один проект. Для меня они все службы WCF, почему бы не поместить их в один и тот же проект? Конечные точки (файлы .svc) - это то, что их разделяет. Я также слышал вопрос: «А как насчет мертвого замка?». Что насчет этого? Это действительная проблема / проблема? (Честно говоря, я не знаю)
Также возникали вопросы о том, поврежден ли DLL-файл. Если это так, то все услуги не работают. Опять же ... это действительная проблема?
Все примеры, которые я видел от Microsoft и других, содержат службы WCF в одном проекте, разделенные разными классами. Интерфейсы находятся в их собственном проекте ... контракты данных в другом проекте и т. Д.
Итак, что вы берете? Как организовать несколько служб WCF в решении Visual Studio? Изучи меня.