Есть ли какие-либо преимущества в использовании не асинхронных действий в Play Framework 2.2?

Play 2.2 документация говорится, что:

Из-за того, как работает Play, код действия должен быть максимально быстрым (т. Е. Неблокирующим). Так что же нам возвращать в качестве результата, если мы еще не можем его сгенерировать? Ответ - будущий результат!

Future [Result] будет в конечном итоге выкуплен значением типа Result. Предоставляя Future [Result] вместо обычного Result, мы можем быстро сгенерировать результат без блокировки. Тогда Play будет служить этому результату, как только обещание будет погашено.

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

Действия, которые возвращают будущее, созданыAction.asyncв отличие отAction.apply для нормальных, не асинхронных действий.

Есть ли польза от не асинхронных действий? Мне кажется, что лучший способ убедиться, что ни одно из моих действий не будет заблокировано, - это объявить их все, используяAction.async.

На самом деле, согласноДокументация по Play Framework 2.3 похоже в Play 2.3 все действия асинхронные:

Примечание. Как Action.apply, так и Action.async создают объекты Action, которые обрабатываются одинаково. Существует один вид действий, который является асинхронным, а не два вида (синхронный и асинхронный). Конструктор .async - это просто средство для упрощения создания действий на основе API, которые возвращают будущее, что упрощает написание неблокирующего кода.

Ответы на вопрос(1)

Ваш ответ на вопрос