Ответ 1
На самом деле есть причина для каждого из трех перечисленных вами методов, специфичных для каждого проекта.
- Бутылка пытается сохранить вещи как простой/понятный для программиста. С декораторами для маршрутов вам не нужно беспокоиться о разработчике, понимающем ООП.
- Цель развития пилонов - сделать код повторно использовать и быть легко интегрированный с HTTP-интерфейсом WSGI маршрутизация процесса. Таким образом, они имеют выбрал очень способ ООП маршруты. В качестве примера вы могли бы скопируйте и вставьте HelloController в любой Приложение Pylons, и это должно быть просто волшебная работа. Даже если это приложение подача через WSGI в некоторых сложный способ.
- У Tornado есть еще одна причина для делая то, что он делает: EOLoop на основе эпохи Торнадо (в сочетании с tornado.web.Application) создает экземпляр каждого RequestHandler как запросы приходят. RequestHandler ограничен конкретным GET или POST это позволяет IOLoop быстро создать экземпляр класса, обработать запрос и, наконец, позволить он получает сбор мусора. Это держит он быстрый и эффективный с небольшим объем памяти независимо от того, как многие RequestHandlers ваше приложение есть. Это также является причиной того, что Tornado может обрабатывать гораздо больше одновременных запросов, чем другие веб-серверы на основе Python (каждый запрос получает свой собственный экземпляр).
Теперь, сказав все, что вы должны знать, что вы всегда можете переопределить поведение платформы по умолчанию. Например, я написал MethodDispatcher для Tornado, что делает его более похожим на Pylons (ну, я имел в виду CherryPy, когда писал). Это замедляет Tornado незначительное количество (и немного увеличивает объем памяти) из-за наличия одного большого RequestHandler (в отличие от множества небольших), но это может уменьшить количество кода в вашем приложении и сделать его немного легче читать (По моему смещенному мнению, конечно =).