В настоящее время в нашем решении 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? Научи меня.