Windows Service Plus GUI / C # - PullRequest
       25

Windows Service Plus GUI / C #

5 голосов
/ 22 декабря 2009

Я видел некоторые приложения, которые работают в качестве службы Windows, но все еще могут предоставлять графический интерфейс, который позволяет пользователю видеть, что на самом деле происходит.

Например, у нас есть служба Windows, которая создает отчеты. Администраторы хотели бы увидеть ряд статистических данных, например, сколько отчетов помещено в очередь, сколько оперативной памяти используется, среднее время сборки и т. Д.

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

Есть ли способ сделать это?

Ответы [ 3 ]

8 голосов
/ 22 декабря 2009

Несколько.

  1. Иметь какой-то компонент, который подключается к вашей службе Windows и отправляет информацию в другое приложение посредством удаленного взаимодействия. Если у вас есть контейнер IoC, умное использование декораторов может сделать это
  2. Используйте служебную шину, MSMQ, WCF, Growl или что-то в этом роде для трансляции интересной информации. Приложения просто должны знать, как подключиться.
  3. Предоставление конечной точки HTTP или чего-либо, к чему кто-то может подключиться и загрузить информацию в службу Windows
  4. Или просто создайте одностраничное приложение WinForms, которое периодически читает файл журнала и отображает интересные результаты.

(Обратите внимание, что последний является, безусловно, самым простым - подсказка, сделайте это.)

0 голосов
/ 22 декабря 2009

Службам запрещается выполнять вызовы API пользовательского интерфейса (кроме одной конкретной формы окна сообщения). Таким образом, сервисы с интерфейсом wser на самом деле являются двумя процессами. Процесс службы взаимодействует со стандартным приложением Windows, используя какой-то проприетарный обратный канал. Может быть именованным каналом, сокетом или портом именованной общей памяти.

0 голосов
/ 22 декабря 2009

В идеале сервисы полностью отделены от пользовательского интерфейса по многим причинам, в которые я не буду входить.

Однако вы можете использовать IPC для просмотра такой информации, как эта. Я бы порекомендовал использовать Remoting для запроса данных, необходимых от службы, а затем создать необходимые отчеты или графики в отдельном приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...