Что бы вы делали без IoC-фреймворков в CF (иначе ColdSpring, Lightwire и т. Д.?) - PullRequest
0 голосов
/ 04 сентября 2010

Я занимаюсь ColdFusion в течение 2 лет, и я всегда использовал ColdSpring для введения зависимости.Я хочу попытаться понять, смогу ли я выжить без них.Какие есть альтернативы?

Для singleton :

onApplicationStart () и внедрение служб в область приложения?

Для переходный :

Заводская модель?XXXFactory.createXXX ()?или ... XXXService.createXXX ()?

Прокомментируйте и поделитесь своей альтернативой.

Ответы [ 3 ]

2 голосов
/ 04 сентября 2010

Генри,

Я бы написал CFC 'DIManager' для управления моими собственными зависимостями и сохранил 'DIManager' в области приложения, используя onApplicationStart (), чтобы он был доступен для жизни приложения.

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

Я бы предпочел использовать методы кэширования ColdFusion 9s в моем «DIManager» для управления сохранением синглетонов, так как я ожидаю еще большей поддержки механизмов машинного хранения по мере развития ColdFusion, и вы можете определить профили для каждого синглтона, чтобы некоторые истекает через некоторое время, в то время как другие живут для жизни приложения. Это обеспечит больший контроль, чем использование области применения. Однако профиль может поместить объект в кластерную область, область сервера и т. Д., В зависимости от конкретной задачи.

Я почти прошел этот путь для проекта, который я собираюсь завершить, но решил не изобретать колесо и просто пошел с ColdBox, поскольку он обладает фантастическими способностями кеширования. Я должен также добавить, что команда ColdBox почти достигла своей цели - разбить фреймворк на отдельные блоки. Последняя отдельная часть - это WireBox, который должен быть выпущен в ближайшее время - так что, если у вас есть ограничения на использование фреймворка, например, MVC или AOP, вы можете написать свое приложение по-своему и при этом использовать WireBox или другие замечательные фреймворки IoC, уже существует (как тот, который вы использовали:).

Надеюсь, это поможет.

Я с нетерпением жду и других ответов.

1 голос
/ 13 сентября 2010

Конечно, есть случаи, когда структура DI скрывает некоторые запахи кода, скажем, автоматически передавая кучу параметров. Делая вещи вручную или, по крайней мере, зная, что из этого следует, вы сделаете свои проекты чище. Это, вероятно, немного похоже на изучение C, даже если вы не используете его часто, это полезно знать.

Здесь есть интересная статья о DI"Сделай сам", которая посвящена Java, но, возможно, того стоит.

0 голосов
/ 07 сентября 2010

Это отличные предложения. В последнее время моей главной целью при создании семейства вспомогательных сервисов было подготовить кеширование и отделить код приложения от внутренней работы API. В частности, это означает, что всегда используются фабрики для генерации переходных процессов и всегда есть одноэлементные сервисы, которые получают запросы от приложения.

Я не думаю, что смогу больше жить без АОП. Мне удалось решить так много неожиданных проблем с многоуровневыми перехватчиками, что я действительно должен построить небольшую святыню за своим столом, чтобы поклоняться АОП.

Итак, в итоге, при создании собственного решения попробуйте внедрить одноэлементные сервисы и временные фабрики. АОП - огромный бонус, но я не могу сказать вам, как это реализовать. Я пользователь ColdSpring и благодарен, что он делает то, что делает!

...