У меня есть эта служба Windows, которая взаимодействует с TCP/IP.
Я хочу знать, как приложение Windows Form может изменить настройки этой службы, такие как адрес удаленного хоста и порт для подключения, тайм-аут. длина и параметры журнала.
Я изучил NamedPipe, службу WCF и IPC, но не могу решить, что лучше всего соответствует моему сценарию.
Было бы неплохо иметь возможность изменить настройки службы, выполнив что-то подобное со стороны клиента.
[Service].SetTimeout(3000);
Есть предложения?
Как управлять настройками службы Windows из графического интерфейса?
- Я бы изменил конфигурацию службы (где бы она ни хранилась — файл, реестр и т. д.), а затем использовал ServiceController, чтобы указать ему перезагрузить настройки. 19.03.2014
Ответы:
Если вам нужен такой программный контроль, лучше всего подойдет WCF. С WCF вы можете сами определить API, например, какие методы вызывать, какие сообщения передавать и т. д. Платформа WCF позаботится об обмене данными за вас. А с файлами конфигурации WCF изменение внутреннего механизма обмена данными тривиально. Например, вы можете заменить NetNamedPipeBinding используется для связи на одном компьютере с NetTcpBinding для связи между компьютерами, просто изменив файл(ы) конфигурации. Полное раскрытие, однако, если вы раньше не занимались WCF, по моему опыту, барьер для входа был довольно высоким. Конечно, я взял свои куски с Visual Studio 2008. Это может быть намного проще в более поздней версии. Вот ответ, который я дал некоторое время назад с некоторыми учебниками, которые помогли мне.
Лично я заменил раннюю реализацию WCF версией на основе TCP через локальный хост в проекте, над которым я работаю. Интерфейсное приложение получает постоянную информацию от службы Windows, когда что-то «работает», и на момент принятия нашего решения потоковая передача WCF была не очень хорошо задокументирована. Мы также видели доказательства проблем, хотя это могло быть просто потому, что мы сделали это неправильно. В любом случае, я очень доволен найденным решением.
Я не могу говорить об именованных каналах напрямую, но из того, что я читал, они просты в использовании.
ХТН.