Config - из консоли в сервис.
Config - из консоли в сервис.
Дано: несколько консольных приложений работающих как сервисы.
Т.е. приложение запускается, отрабатывает, перезапускается.
В процессе работы читает кучку информации с серверов (это понятно) и из конфигов.
Конфиги - обычные - app.exe.config, но довольно запутанные,
Сейчас идет переделка кода и хочется заодно перевести из консольных приложений
в виндовс-сервисы.
Оформление сервисом проблемы не вызывает. Вот как тут описано, так и делаю:
https://docs.microsoft.com/en-us/dotnet/framework/windows-...
Одна вещь не понятна. Пока были конфиги для каждого приложения - все понятно.
Сейчас не понятно как из сервиса получать доступ к информации из конфига и что
делать если для разных сервисов пользуются разные значения для тех же элеменотв
конфигов...
В общем - как управляться с конфигами в сервисаx?
Вот что точно делал это чтобы можно было запустить и как сервис и как консоль.
-----
Никогда не писал виндовс-сервисы. Ни в старом, консольном, варианте, ни в новом.
Т.е. про консольные аппы в качестве сервисов - знаю, но не делал.
Не вижу никаких проблем сделать консольную обертку над кодом сервиса.
Так что буду имплементить как написано по ссылке и добавлю консольку если надо.
Вопрос же который интересует - как работать с конфигами для разных сервисов?
Вот были две консольки с конфигами:
app1.exe.config
<?xml version="1.0" encoding="utf-8" ?><configuration><configSections><sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ><section name="My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /></sectionGroup></configSections><userSettings><My.MySettings><setting name="notificationserver" serializeAs="String"><value>192.168.1.10</value></setting></My.MySettings></userSettings></configuration>
app2.exe.config
<?xml version="1.0" encoding="utf-8" ?><configuration><configSections><sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ><section name="My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /></sectionGroup></configSections><userSettings><My.MySettings><setting name="notificationserver" serializeAs="String"><value>192.168.1.20</value></setting></My.MySettings></userSettings></configuration>
При имплементации сервисов как указано по ссылке - там будет только один конфиг... и тот доступен только из запускающего приложения.
Вот тут Я и не понимаю как хранить и как получить доступ к нужным данным.
Наиболее удобно будет иметь два отдельных конфига, но так не работает...
Не вижу никаких проблем сделать консольную обертку
проблем особых нет, но нужно делать. Хотя можно и не делать, но так удобнее при проблемах.
там будет только один конфиг... и тот доступен только из запускающего приложения
Зачем иметь больше одного? Сконвертируй в один.
Зачем? Концепт: одно приложение-один конфиг.
-----
Ты линку на нынешнюю методу по написанию виндовс-сервисов погляди - там много сервисов, но всего один инсталлятор/запускатель/конфигуратор.
Один. И один конфиг. А сервисов - много... и одноименные параметры не совпадают по значениям.
Всё остальной делай сам.
-----
Ну так этого то и хочу избежать.
Бо не хочется писать парсер параметров командной строки для каждого сервиса - там уже есть парсер конфигa.
Из-за этого и сыр-бор...