Существует служба Windows, написанная на C#. Мне нравится запускать сценарии Powershell на одном компьютере и иметь возможность обмениваться информацией между этой службой Windows и скриптами PS. Так что мне интересно, что это лучший, простой, простой и эффективный способ? WCF?Каков наилучший способ связи между скриптом Powershell и службой Windows?
ответ
Технически, если оба взаимосвязанных процесса работают на одном компьютере, я бы рассматривал связь с использованием именованных каналов.
О, пропущенные комментарии, которые предлагают названные каналы :) –
Я предлагаю следующие способы, которые я использовал:
- Файловая система
я использую файловую систему в тех случаях, если мне нужно сделать простые операции чтения/записи. Как обычно, я писал что-то для файла. А затем добавляется к файлу времени с момента. Самая большая проблема с этим подходом - механизм блокировки. - Буфер обмена
Это в основном подходит для случаев, если мне нужно отправить небольшой кусок информации в буфер обмена, и служба Windows с регулярным интервалом прочитала его. Большие фрагменты текста работают медленно, но небольшие фрагменты текста в порядке. Среди негативных аспектов буфера обмена - проблемы, связанные с мешанием пользователю скопировать что-то в буфер обмена. Чтобы исправить это, я использовал отдельный счет для обслуживания - WCF
В основном я использовал этот вариант для распределенных систем. Лично я не вижу выгоды от этого, если служба PS и windows работает на одном компьютере. Но нет ничего плохого, если бы на одной машине их обоих. - Розетки
Мне нравится эта опция для случаев, если мне нужно быстро передавать информацию через память быстро. - Журнал событий Windows (уродливая идея, но для некоторых случаев полезно).
Как обычно, это полезно для уведомления об ошибках или некоторых информационных действиях. - База данных (Некоторое время она также работоспособна)
Если в передаче информации много форматирования, сложных правил чтения, то я предпочитаю делать некоторые классы, которые могут быть повторно использованы PS в качестве .Net-объектов и чтения/записи/изменить их в службе Windows.
Я смотрю на WCF. Не могли бы вы добавить более подробную информацию о том, какой тип связи вы использовали? – MichaelSo
Я немного расширил свой ответ –
Вы запускаете сценарии PS вручную, или служба Windows выполняет этот скрипт? –
Это зависит от многого. дайте нам еще один контекст. –
Именованные трубы - один из многих вариантов. –