В нашей компании услуги состоят из 3 сборок:
1) «контрактная» сборка, которую мы называем [Company]. [Project] .Contract.Эта сборка содержит объекты DTO (Domain), определения интерфейса и класс Client для доступа к службе.Эта сборка может быть предоставлена тем, кто хочет использовать ваш сервис.
2) «бизнес» сборка, которую мы называем [Company]. [Project] .Business.Эта сборка предоставляет фабричный класс, который возвращает интерфейсы для внутренних рабочих классов.
3) «сервисная» сборка, которую мы называем [Company]. [Project] .Service для традиционной службы SOAP или [Company]. [Project] .Rest в случае службы REST, это «фасад», который публикует интерфейсы службы и покрывает логику транспорта и протокола.
Объединение всех функций в одной службе является хорошим вариантом дляНачнем с того, что скоро вы обнаружите, что некоторые классы естественным образом связаны друг с другом, так что вы, вероятно, получите ряд специфичных для домена сервисов.
Теперь, WCF имеет эту прекрасную концепцию конфигурации, но те, кто имеет опыт работы с этим, согласятся, что это может быть очень утомительным и подверженным ошибкам, особенно когда ваша SOA становится более сложной (как это всегда бывает,в конце концов).Это всегда приводит к очень сложным конфигурациям, умноженным на различные среды (разработка, тестирование, подготовка, производство), в которых будут работать сервисы. Нет необходимости говорить, что это может привести к ошибкам.
Чтобы справиться с этим, мы используемплатформа broobu, которая позволяет практически нулевую конфигурацию для служб WCF с использованием WS-Discovery и динамической генерации прокси-сервера, единственным недостатком этого решения является то, что вы предпочтительно используете службы, размещенные на IIS, с AppFabric 1.1.Таким образом, вы используете IIS для настройки служб: гораздо безопаснее (так как вы не будете использовать файлы конфигурации XML) и гораздо более масштабируемыми.