Асинхронные события через CFCs против cfthread?
Я не могу поверить, что я только что прочитал это: Использование шлюза событий CFML для асинхронных CFC
Насколько я знаю, поток также может быть использован для выполнения асинхронных событий. Тем не менее, у меня возникают проблемы с пониманием, когда я должен использовать поток против шлюза событий CFML? Какая цель или ситуация подходит для одной реализации стихов другой?
Есть ли какие-либо ограничения для асинхронных событий через CFC в ColdFusion Standard Edition? Я знаю, что есть ограничение в 2 максимальных пользовательских потока. Считается ли "Потоки обработки шлюза событий" на какое-либо ограничение?
1 ответ
Использование шлюзов событий для событий Asynch предшествует потокам, и я думаю, что функция "asynch cfc" была дополнительным побочным эффектом.
Если цель состоит в том, чтобы просто выполнить некоторую обработку для асинхронного завершения, я бы использовал потоки.
Настоящая цель шлюзов событий - это связь с внешними системами. Я широко использовал шлюзы событий, но для связи с очередями сообщений, XMPP, потоковым API-интерфейсом Twitter и многими другими неясными "корпоративными java-y" вещами.
Одна из проблем шлюзов событий заключается в том, что среда, в которой они работают, несколько отличается от запроса, отправляемого через http-сервер. Например, большинство переменных CGI не установлены или содержат необычные значения. У вас также нет доступа к сеансу пользователя и т. Д.
С CFTHREAD у вас намного больше контроля над этим.
Глядя на матрицу продуктов здесь:
http://www.adobe.com/products/coldfusion/pdfs/cf9_feature_comparison_matrix_ue.pdf
Похоже, что в CF Standard вы получаете один шлюз одновременных событий, так что это, вероятно, не полезная функция в производственной среде. Я думаю, что он жестко привязан к одному потоку, независимо от того, что установлено в администраторе.
Таким образом, с CF Standard, вы как бы облажались.
Еще одна причина использовать Railo или OpenBD.