Какие ошибки с ColdFusion? - PullRequest
       38

Какие ошибки с ColdFusion?

7 голосов
/ 26 февраля 2010

Справочная информация : У меня новый сайт на этапе проектирования, и я рассматриваю возможность использования ColdFusion.Сервер в настоящее время настроен с ColdFusion и Python (сделано для меня).

Это мой выбор того, что использовать, и ColdFusion кажется интригующим с концепцией тегов.Разработав сайты на PHP и Python, идея использовать новый инструмент кажется забавной, но я хочу убедиться, что его так же легко использовать, как и два других варианта, с такими вещами, как улучшение URL и масштабируемость.общие проблемы с использованием ColdFusion в отношении масштабируемости и скорости разработки?

Мой другой выбор - использовать Python с WebPy или Django.

Ответы [ 5 ]

9 голосов
/ 26 февраля 2010

ColdFusion 9 с хорошей платформой, такой как FW / 1 Шона Корнфельда, обладает высокой производительностью и всеми функциональными возможностями любого современного языка разработки веб-серверов. Он имеет несколько замечательных функций интеграции, таких как поддержка сервера Exchange и поддержка Excel / PDF из коробки.

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

Свободно используйте memcached или встроенный ehache в CF9, будьте внимательны с вашей стратегией доступа к данным, интеллектуально разбивайте на фрагменты возвращаемые данные, и у вас будет хорошая производительность.

В последнее время мой подход к CF включает широкое использование jQuery для клиентской логики и использование CF для начальной настройки страницы и вызовов ajax для заполнения таблиц. Это значительно сокращает код, специфичный для CF, и вызывает хорошее логическое разделение. Кроме того, это сокращает зависимость на любой платформе (кроме превосходной библиотеки jQuery).

Чтобы конкретно ответить на ваш вопрос, если вы прочтете теги [coldfusion] здесь, вы увидите, что вопросы редко касаются скорости или масштабируемости, он отлично масштабируется. Многие вопросы, похоже, касаются мест, где CF - довольно тонкий слой для другого инструмента, такого как Apache Axis (веб-сервисы) и ExtJs (cfajax) - ни того, ни другого вам не нужно использовать. Вам, вероятно, потребуется переписать мод или IIS, чтобы скрыть .cfm

6 голосов
/ 26 февраля 2010

Поскольку у вас уже есть и ColdFusion, и Python, я тщательно рассмотрю, чего именно вы пытаетесь достичь.

Нужна ли вам постепенная кривая обучения, дружественный к новичкам язык (легкий для тех, кто знает HTML, чтобы выучить), отличная документация и множество функций, которые облегчают обычно сложные задачи? Это звучит как работа для ColdFusion.

Тем не менее, как только вы ознакомитесь с основами ColdFusion, легко перейти к объектно-ориентированному подходу (как уже отмечали другие, существует множество доступных сред MVC: FW / 1, ColdBox, Fusebox, Model-Glue , Mach-ii, Lightfront, и этот список можно продолжить ...), а также есть инфраструктуры управления зависимостями (DI / IoC) (мой любимый из которых ColdSpring, смоделированный по Java-среде Spring) и возможность создавать Aspect. Ориентированное программирование, а также. Наконец, есть также несколько платформ ORM (Transfer, Reactor и DataFaucet, если вы используете CF8 или более раннюю версию или добавляете Hibernate в список в CF9 +).

ColdFusion также прекрасно играет практически со всем остальным. Он может загружать и использовать сборки .Net, обеспечивает собственный доступ к классам Java и делает создание и / или использование веб-служб (в частности, SOAP, но возможен REST) ​​несложным. (Я думаю, что это даже делает com / corba, если вы хотите использовать технологии с 1991 года ...)

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

Что касается изменения URL-адреса, (опять же, как уже отмечали другие), это на самом деле не делается в языке (хотя вы можете его выдумать); чтобы получить действительно красивый URL, вам нужен либо mod_rewrite (который можно сделать без .htaccess, вместо этого правила будут включены в файл конфигурации Apache VHosts), либо с одним из продуктов перезаписи URL IIS.

«Фудж», на который я ссылался, будет выглядеть следующим образом: http://example.com/index.cfm/section/action/?search=foo - «.cfm» находится в URL, так что запрос передается с веб-сервера (Apache / IIS) на Сервер приложений (ColdFusion). Чтобы избавиться от «.cfm» в URL, вам действительно нужно использовать инструмент перезаписи URL; Обойти это невозможно.

2 голосов
/ 26 февраля 2010

сделайте себе одолжение и проверьте проект CFWheels . у него есть поддержка перезаписи URL и маршруты, которые вы ищете. также как полнофункциональный фреймворк mvc, он поставляется со своим собственным orm.

2 голосов
/ 26 февраля 2010

Из двух лет работы с CF для меня самые большие ошибки:

Если вы в основном кодируете с использованием тегов (а не CFScript) и форматируете для удобства чтения, будьте готовы к тому, что ваши выходные данные будут заполнены пробелами. В отличие от других языков сценариев, пробел между операторами фактически отправляется клиенту - поэтому, если вы зацикливаетесь на чем-то 100 раз и выводите результат, все разрывы строк и вкладки в исходном коде цикла будут появляться 100 раз. Есть способы обойти это, но это было давно - я уверен, что кто-то в SO уже задавал вопрос раньше, поэтому быстрый поиск даст вам ваше решение.

В связи с проблемой пробелов, если вы пишете скрипт для использования с AJAX или Flash и пытаетесь отправить xml; даже один пробел до того, как DTD может сломать некоторые из более суетливых движков синтаксического анализа (jQuery имел обыкновение падать вот так - я не знаю, так ли это до сих пор, а вспышка была кошмаром). Когда я впервые сделал это, я потратил часы, пытаясь понять, почему то, что выглядело как правильно сформированный XML, приводило к смерти моего скрипта.

Более поздние версии не так уж и плохи, но я также работал над устаревшими системами, в которых не хватало даже самых базовых функций. Довольно часто вы обнаружите, что вам нужно искать библиотеку COM или Java, чтобы выполнить эту работу за вас. Опять же, однако, это в более ранних версиях.

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

Кроме этого, я нашел CF для работы с забавным языком - он имеет свои особенности как и все остальное, но в целом он был в основном свободен от головной боли и работал быстро.

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

Приветствия

Иэн

РЕДАКТИРОВАТЬ: О, и по причинам, наиболее известным Adobe, если вы используете пробную версию, вы получите прекрасный жирный HTML-комментарий перед всеми вашими выводами - независимо от того, действительно ли вы выводите HTML. И да, потому что комментарий появляется перед вашим DTD, будьте готовы к тому, что некоторые браузеры (не смотря ни на что конкретно!) Отобразят его как чушь. Опять же - возможно, они переосмыслили это в новой версии ...

РЕДАКТИРОВАТЬ # 2: Вы также упомянули перезапись URL - где я работал, мы делали это все время - без проблем. Если вы работаете на Apache, используйте mod_rewrite, если вы работаете на IIS, купите ISAPI Rewrite 3.

1 голос
/ 26 февраля 2010

Прошло несколько лет, поэтому моя информация может быть немного устаревшей, но по моему опыту:

Плюсы:

Coldfusion легок в изучении и позволяет быстро приступить к работе.

Минусы:

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

Есть некоторые дисциплины, которым можно следовать, чтобы сделать вещи немного более ремонтопригодными; «Fusebox» был один. Могут быть и другие.

...