Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Config - из консоли в сервис.

115  
Murr патриот16.05.18 10:33
Murr
16.05.18 10:33 

Config - из консоли в сервис.


Дано: несколько консольных приложений работающих как сервисы.

Т.е. приложение запускается, отрабатывает, перезапускается.

В процессе работы читает кучку информации с серверов (это понятно) и из конфигов.

Конфиги - обычные - app.exe.config, но довольно запутанные,


Сейчас идет переделка кода и хочется заодно перевести из консольных приложений

в виндовс-сервисы.

Оформление сервисом проблемы не вызывает. Вот как тут описано, так и делаю:

https://docs.microsoft.com/en-us/dotnet/framework/windows-...


Одна вещь не понятна. Пока были конфиги для каждого приложения - все понятно.

Сейчас не понятно как из сервиса получать доступ к информации из конфига и что

делать если для разных сервисов пользуются разные значения для тех же элеменотв

конфигов...


В общем - как управляться с конфигами в сервисаx?

#1 
AlexNek патриот16.05.18 11:14
AlexNek
NEW 16.05.18 11:14 
в ответ Murr 16.05.18 10:33

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

#2 
Murr патриот16.05.18 12:32
Murr
NEW 16.05.18 12:32 
в ответ AlexNek 16.05.18 11:14

Вот что точно делал это чтобы можно было запустить и как сервис и как консоль.

-----

Никогда не писал виндовс-сервисы. Ни в старом, консольном, варианте, ни в новом.


Т.е. про консольные аппы в качестве сервисов - знаю, но не делал.

Не вижу никаких проблем сделать консольную обертку над кодом сервиса.

Так что буду имплементить как написано по ссылке и добавлю консольку если надо.


Вопрос же который интересует - как работать с конфигами для разных сервисов?

Вот были две консольки с конфигами:

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>


При имплементации сервисов как указано по ссылке - там будет только один конфиг... и тот доступен только из запускающего приложения.

Вот тут Я и не понимаю как хранить и как получить доступ к нужным данным.

Наиболее удобно будет иметь два отдельных конфига, но так не работает...

#3 
AlexNek патриот16.05.18 12:44
AlexNek
NEW 16.05.18 12:44 
в ответ Murr 16.05.18 12:32
Не вижу никаких проблем сделать консольную обертку

проблем особых нет, но нужно делать. Хотя можно и не делать, но так удобнее при проблемах.


там будет только один конфиг... и тот доступен только из запускающего приложения

Зачем иметь больше одного? Сконвертируй в один.


#4 
Murr патриот16.05.18 13:30
Murr
NEW 16.05.18 13:30 
в ответ AlexNek 16.05.18 12:44

Сконвертируй в один.

-----

Ну так не складываются. безум


Но больше интересует как добираться до конфига из сервиса.

Билли данный вопрос решил замять для ясности... смущ

#5 
AlexNek патриот16.05.18 14:38
AlexNek
NEW 16.05.18 14:38 
в ответ Murr 16.05.18 13:30
как добираться до конфига из сервиса.

Зачем? Концепт: одно приложение-один конфиг. Всё остальной делай сам.

#6 
Murr патриот16.05.18 17:01
Murr
NEW 16.05.18 17:01 
в ответ AlexNek 16.05.18 14:38

Зачем? Концепт: одно приложение-один конфиг.

-----

Ты линку на нынешнюю методу по написанию виндовс-сервисов погляди - там много сервисов, но всего один инсталлятор/запускатель/конфигуратор.

Один. И один конфиг. А сервисов - много... и одноименные параметры не совпадают по значениям.


Всё остальной делай сам.

-----

Ну так этого то и хочу избежать.

Бо не хочется писать парсер параметров командной строки для каждого сервиса - там уже есть парсер конфигa.

Из-за этого и сыр-бор...

#7 
AlexNek патриот16.05.18 21:35
AlexNek
NEW 16.05.18 21:35 
в ответ Murr 16.05.18 17:01