Развертывание веб-сайта - службы WCF во внешней DLL

У меня есть N-уровневое решение для веб-сайта (на основе MVC3), где все компоненты регистрируются через контейнер IoC (т.е. веб-проект не имеет ссылок ни на что, кроме интерфейсов и моделей).

Один из проектов в решении должен работать с внешними службами WCF. Эти запросы WCF содержатся только в этом проекте, и никакой другой проект в решении не должен знать об этом.

Однако, когда я хочу запустить веб-сайт, мне все равно нужно убедиться, что все привязки и конечные точки WCF присутствуют в web.config сайта.

Мой вопрос: можно ли содержать всю эту конфигурацию в сборке, которая действительно работает со службами, чтобы веб-проект мог оставаться в блаженном неведении о них?

Заранее спасибо.


person Ilya Ayzenshtok    schedule 30.07.2012    source источник


Ответы (1)


Нам нужно поместить все записи конфигурации в файл web.config / app.config запускаемого приложения.

Чтобы веб-приложение не знало об услугах, вы можете:

  • Поместите все детали хоста, привязки, конечной точки и т. Д. В код, а не в файл конфигурации. Конечно, это уменьшит настраиваемость вашего приложения.
  • Сохраните всю конфигурацию, связанную с сервисом, в отдельном файле и укажите ссылку на этот файл в web.config.
person danish    schedule 30.07.2012
comment
Да, я думал о том, чтобы иметь отдельный файл services.config. Мне было интересно, есть ли лучший (более Magic-y) способ как-то сделать это с помощью IoC. - person Ilya Ayzenshtok; 30.07.2012
comment
Другой способ, который я могу придумать, - это загрузить dll с помощью службы в отдельном домене приложений. Затем фреймворк прочитает его файл конфигурации. Если вы используете .Net 4.0, отметьте Managed Extensibility Framework. - person danish; 30.07.2012