.NET - развертывание клиента WCF без app.config

Я пишу клиент для службы WCF. Это одно приложение в более крупной системе, которое включает модули, написанные на C #, C ++, VB и Java. Все приложения используют общие механизмы конфигурации и ведения журнала, независимо от того, на каком языке они были написаны.

Я хотел бы выяснить, как создать клиентское приложение так что он будет работать без app.config. Почему? Поскольку большая часть того, что находится в app.config, является шаблоном, который нельзя разрешать изменять системным администраторам, и то, какие настройки системным администраторам следует разрешить изменять, должно быть в общесистемной конфигурации, а не в файле app.config. сидит в каталоге bin.

Показательный пример - клиентское приложение.config в настоящее время выглядит так:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="WSHttpBinding_ICourierService">
          <security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation"
            ...
          </security>
          <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
            messageVersion="Default" writeEncoding="utf-8">
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
              maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          </textMessageEncoding>
          <httpTransport manualAddressing="false"
            ...
            useDefaultWebProxy="true" />
        </binding>
      </customBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:57102/MyService.svc"
        ...
        >
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>

Это набор непрозрачных шаблонов, с которыми системным администраторам не следует иметь дело. Большая часть этого была вставлена ​​Visual Studio. Я сделал одно изменение в файле - увеличил максимальный размер в . Но это изменение, с которым я не хочу связываться с системными администраторами. И в файле нет ничего другого, с чем я бы хотел, чтобы системные администраторы возились, кроме .

И я беру адрес конечной точки из общесистемной конфигурации и устанавливаю его в коде. В этом файле нет ничего, что можно было бы редактировать.

Итак, как мне настроить все так, чтобы он не присутствовал?

Могу ли я встроить его как ресурс в сборку и подключиться к процессу загрузки app.config, как я это делаю с необходимыми библиотеками DLL?

Единственный выбор - создать код для настройки, как я использую код для установки адреса конечной точки? Создать в коде необходимые привязки и т. Д.? Тогда как мне узнать, какой код писать, учитывая эти куски непрозрачного XML?

22
задан Johann Blais 3 March 2014 в 14:11
поделиться