Управление процессом с помощью веб-форм - PullRequest
0 голосов
/ 05 июня 2011

Я пытаюсь найти решение для управления процессом, который запускаю через веб-формы.

Я знаю, что довольно легко начать и остановить его с помощью класса System.Diagnostics.Process.

Чего я пытаюсь добиться - это отправить данные процессу (серверу Terraria). По сути, сам сервер, когда он запущен правильно, вы можете написать в нем некоторые команды, такие как kick / ban / save / exit и т. Д.

Я бы хотел написать эти команды, но с дистанционным управлением через приложение webforms.

Ближайшее решение, которое я подумал, состояло бы в том, чтобы вызвать сервер с помощью демона, который я бы написал, который работал бы в качестве шлюза между командами webforms и приложением сервера. Это правильный способ делать вещи? Или есть более простой способ сделать это?

Ответы [ 3 ]

0 голосов
/ 05 июня 2011

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

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

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

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

0 голосов
/ 05 июня 2011

Да, это лучший способ - создать службу Windows, которая будет контролировать и контролировать процесс, и использовать этот API для построения службы Windows для приложения ASP.NET (веб-формы).

Приложение ASP.NET может автоматически обновлять страницу (с помощью javascript или мета-тега обновления) и получать новый статус от службы Windows, которая контролирует ваш процесс, а также для улучшения событий вы можете создавать приложения javascript, получать новые данные о состоянии и отправлять команды с помощью ajax , поэтому не нужно будет обновлять всю страницу.

0 голосов
/ 05 июня 2011

Возможно, вы ищете класс BackgroundWorker , который был представлен в .Net 3.5?Чтобы выполнить трудоемкую операцию в фоновом режиме, вы создаете BackgroundWorker, а затем прослушивает события, которые сообщают о ходе вашей операции и сигнализируют о ее завершении.Он выполняется в отдельном потоке.

На сайте MSDN есть несколько примеров, которые могут помочь вам выяснить, подходит ли вам это.

Или вы можете просто использовать веб-сервис или WCF , не так ли?Вы можете разместить веб-службу на веб-сервере или в качестве службы Windows.

...