Лось - фантастический каркас объекта. Беда в том, что вместе со своими зависимостями он очень большой. Наше профилирование показывает, что на нашей платформе простая загрузка Moose повлечет за собой 5-6 секундную нагрузку на непостоянные сценарии приложения CGI. Это просто неприемлемо для этих одноразовых приложений.
В отличие от этого, когда мы используем постоянную систему процессов (например, FCGI), эти издержки запуска исключаются (или, скорее, только один раз), и все хорошо. Проблема в том, что мы не можем гарантировать, что весь наш код будет всегда выполняться в постоянном процессе.
Мы исследовали использование Mouse в качестве замены Moose с ограниченной функциональностью, но, как выясняется (как упоминалось в этот ответ ), этот вариант не подходит. Любые библиотеки, которые мы пишем для работы с Moose, не будут работать с мышью тонкими, но важными способами. И мы действительно не хотим разветвлять все наши модули, чтобы мы могли поддерживать как Moose в постоянной среде, так и Mouse для "ванильного" CGI.
Учитывая это, у нас есть следующие опции:
- Форки наших собственных модулей для работы с Moose или Mouse, в зависимости от ситуации. (Тьфу!)
- Разрабатывать только наши модули для FCGI / Moose . Больше не поддерживаю "ванильный" CGI. Если нам придется писать непостоянные сценарии, они не смогут использовать наши собственные модули.
- Не используйте Moose или Mouse , но некоторые другие объектные рамки.
Какой вариант лучше? Мы склоняемся к 2 прямо сейчас, и мы просто смиримся с этим, если нам нужно будет запустить что-то вроде ванильного CGI. Как насчет других фреймворков? Есть ли что-нибудь более легкое, на что мы должны смотреть?