Асинхронные и синхронные методы действий в одном контроллере - PullRequest
2 голосов
/ 25 октября 2011

Возможно ли иметь асинхронные и синхронные методы действия в AsyncController? Есть ли какой-либо недостаток в этом?

Причина в том, что асинхронная операция имеет смысл для длительной операции, но не имеет смысла для возврата формы в HTML.

Например, у меня есть страница, которая генерирует файл. Метод действия, который возвращает форму с входными данными, почти не имеет логики, но метод действия, который получает POST, отправляет его в другой веб-сервис и передает ответ, занимает некоторое время, поэтому имеет смысл делать это асинхронно.

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

Приветствие.

1 Ответ

5 голосов
/ 25 октября 2011

Возможно ли иметь асинхронные и синхронные методы действий в AsyncController?

Да.

Есть ли какой-либо недостаток, делающий это?

Не совсем.

Причина в том, что асинхронная операция имеет смысл для длительной операции

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

Например, у меня есть страница, которая генерирует файл.Метод действия, который возвращает форму с входными данными, почти не имеет логики, но метод действия, который получает POST, отправляет его в другой веб-сервис и передает ответ, занимает некоторое время, поэтому имеет смысл делать это асинхронно.

ОК, вызов веб-службы является интенсивной операцией ввода-вывода => вы получите выгоду от асинхронного контроллера.В этом случае вы можете выполнить два действия на одном асинхронном контроллере.

...