Выполнение консольного приложения от asp.net - PullRequest
1 голос
/ 13 ноября 2011

Я понимаю, что могу выполнить Process.Start для запуска консольного приложения из веб-приложения, но мне хотелось бы подумать о том, как правильно спроектировать этот проект.

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

Process.Start выполняет консольное приложение в том же потоке, что и процесс asp.net?Если да, блокирует ли это браузер пользователя?Должен ли я делать это асинхронно?Если да, то как это рекомендуется?Как получить результаты обратно из консольного приложения?

Кроме того, будет ли этот подход масштабируемым для нескольких сотен пользователей, отправляющих запросы?

Есть еще ответы?

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

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

Такой подход очень масштабируем и широко используется.

1 голос
/ 13 ноября 2011

Process.Start - это неблокирующий вызов.Вы можете использовать объект Process, обрабатывать его события и читать из него или записывать в его потоки.

Что касается масштабируемости, вам может потребоваться много мощных серверов.Это зависит от фактического процесса.

...