.NET - развертывание клиента WCF без app.config
Я пишу клиента в службу WCF. Это отдельное приложение в более крупной системе, которое включает модули, написанные на C #, C ++, VB и Java. Все приложения имеют общие механизмы настройки и регистрации, независимо от того, на каком языке они были написаны.
Я хотел бы выяснить, как создать клиентское приложение, чтобы оно работало без app.config. Почему? Поскольку большая часть того, что находится в app.config, представляет собой шаблон, в котором системным администраторам нельзя разрешать изменять, и какие параметры системным администраторам следует разрешать изменять, они должны быть в общесистемной конфигурации, а не в файле app.config. сидя в каталоге бен.
Показательный пример - клиентский app.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. Я сделал одно изменение в файле - я увеличил максимальный размер в<readerQuotas/>
, Но это изменение, с которым я не хочу связываться сисадминами. И нет ничего другого в файле, с которым я хочу связываться сисадминами, кроме<endpoint address=""/>
.
И я извлекаю адрес конечной точки из общесистемной конфигурации и устанавливаю его в коде. В этом файле нет ничего, что могло бы редактироваться пользователем.
Итак, как мне настроить вещи так, чтобы они мне не нужны?
Могу ли я встроить его как ресурс в сборку и подключить к процессу загрузки app.config, как это делается с необходимыми DLL?
Является ли единственным выбором для создания кода для настройки вещей, как я использую код для установки адреса конечной точки? Создать необходимые привязки и т. Д. В коде? Как же тогда узнать, какой код писать, учитывая эти куски непрозрачного XML?