2009-12-01 4 views
0
  1. Люди говорят, что библиотеки не должны иметь конфигурационные файлы.
  2. Я не могу передать аргументы в свой класс службы WCF со своего хоста (но я могу от клиента).
  3. Я не хочу сохранять конфигурацию на клиенте.
  4. Что мне делать?

ответ

2

Что вы спрашиваете? Вы говорите о настройках службы (стороне сервера) или клиенте?

Почему вы не можете использовать файлы конфигурации на стороне клиента, как в других приложениях? Это встроенный, предпочтительный способ делать вещи - зачем настаивать на том, чтобы не использовать его?

Итак, что же вы действительно спрашиваете? Или какая проблема, что вы пытаетесь решить, действительно?

  • для обслуживания (на стороне сервера): хранить ваши привязки, поведения конечных точек служб и т.д. в web.config (если хостинг в IIS) или в app.config вашего узла службы (если NT Сервис или консольное приложение)

  • для клиента: сохраните конфигурацию в app.config основного приложения, которое использует вашу библиотеку. Если вы хотите, вы можете предоставить готовую «client.config» и файлы «bindings.config», а затем просто добавить

    <system.serviceModel> 
        <bindings configSource="bindings.config" /> 
        <client configSource="client.config" /> 
    </system.serviceModel> 
    

к app.config вашего клиентского приложения - не получить намного проще, чем это, действительно!

+0

Мой вопрос не касался конфигурации конечных точек, но ваш ответ был полезен для меня. Я просто не мог использовать параметр configSource, потому что моя Visual Studio говорит мне: Warning Атрибут 'configSource' не объявлен. –

+1

Да, но это «ложный позитив» - Visual Studio жалуется, но это работает на ралли - поверьте мне, мои системы используют это КАЖДЫЙ день в производстве! –

0

Я не, если я подхожу на этот вопрос правильно ...

Первый пункт совершенно произвольном, и звучит немного фашист, или Большие если вы приехали из Великобритании. Много разных типов библиотек поставляются с конфигурационным файлом. Каким другим способом вы это сделаете? Как это будет работать, если вы не настроили его, а именно то, на чем построена модель конфигурации .NET.

Народ должен прекратить фокусироваться на баффах архитектуры, P & P механики и пуристы программирования, которые часто принимают экстремальные взгляды на основе лучших или незначительных принципов дизайна, прежде всего, говоря, что вы должны это делать и делать это.

Если вы хотите скрыть свой конфигурационный файл, зашифруйте его. Если вы не хотите этого делать, но хотите, чтобы они были доступны авторизованным пользователям, используйте защищенное хранилище.

Bob.

+0

Нельзя сказать, что нет никаких аргументов против этого, но установка необходимой конфигурации библиотеки в файле конфигурации потребляющего кода приводит к уменьшению количества поддерживаемых файлов. Один файл конфигурации для каждого приложения. –