Можно ли все сделать программно в WCF или это файлы конфигурации для определенных функций? - PullRequest
4 голосов
/ 12 ноября 2009

У меня есть сильное предпочтение работать с кодом, использовать IntelliSense и использовать все возможности языка C # для работы с WCF , но я хочу убедиться, что я не двигаюсь в направление, которое в конечном итоге ограничит набор функций WCF, к которым я могу получить доступ. Мой опыт работы с WCF настолько ограничен, что я не понимаю преимуществ использования файлов конфигурации, особенно если вы можете делать все в коде (?).

Примечание: я использую .NET 3.5.

Можете ли вы сделать «все» с WCF программно или файлы конфигурации требуются для полного набора функций WCF?

Ответы [ 2 ]

6 голосов
/ 12 ноября 2009

Вы можете сделать около 99,8% вещей в коде, а также в конфигурации.

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

И, кажется, есть несколько вещей, которые можно сделать только в конфиге - см. Этот другой последний вопрос SO для одного примера.

Но я думаю, что если вы предпочитаете код, то в большинстве случаев вам подойдет.

Марк

4 голосов
/ 27 апреля 2010

заросший комментарий ...

Ответ Marc_s и перспектива вопроса хорошие (два + 1 от меня).

Я не сомневаюсь, что следующее не будет новостью ни для кого из вас, но хотел бы указать на это, если кто-то столкнется с этим и не узнает о минусах чисто программного подхода.

Переход к программной конфигурации из средств настройки на основе файла конфигурации

  • вы теряете возможность корректировать (читай: взламывать!) Вещи в поле - ваша единственная возможность - перекомпилировать и повторно развернуть двоичные файлы. Для многих сценариев (включая один из моих) это не n.
  • вы теряете возможность переключаться между несколькими наборами конфигураций, манипулируя ими в файле конфигурации.

Я признаю, что оба упомянутых «убытка» являются дискуссионными - они могут поощрить вредные привычки и помешать вам найти наиболее надежное решение для ваших клиентов как можно быстрее.

ОБНОВЛЕНИЕ: я реализовал механизм, в котором я использую ChannelFactory<T>, но забрал настроенную конфигурацию из app.config, если он присутствует, или предоставил значение по умолчанию, если его нет (мой сценарий таков, что я guest в чужом процессе и, следовательно, не может предположить, что файл конфигурации легко обновляется / обновлен, но не хочет терять возможность настройки параметров после развертывания)

...