Каковы глюки с ColdFusion?

Фон: у Меня есть новый сайт в стадии проектирования, и рассматриваю использование ColdFusion. Сервер в настоящее время является установкой с ColdFusion и Python (сделанный для меня).

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

Есть ли какие-либо типичные проблемы с использованием ColdFusion в отношении масштабируемости и скорости разработки?

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

7
задан Matt Busche 27 February 2015 в 20:44
поделиться

5 ответов

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

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

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

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

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

9
ответ дан 6 December 2019 в 09:19
поделиться

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

2
ответ дан 6 December 2019 в 09:19
поделиться

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

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

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

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

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

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

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

6
ответ дан 6 December 2019 в 09:19
поделиться

Ничтожность массива символов не является корнем проблемы! (Это -a- проблема, но не единственная проблема.)

Выравнивание! Это ключевое слово. Вот почему вы НИКОГДА не должны пытаться относиться к структурам, как к сырой памяти. Комплиеры (и различные флажки оптимизации), операционные системы и фазы Луны - все это делает странные и захватывающие вещи для фактического расположения в памяти «смежных» полей в структуре. Например, если у вас есть структура с символом, за которым следует int, вся структура будет ВОСЕМЬ байт в памяти - символ, 3 пустых, бесполезных байта, а затем 4 байта для int. Машина любит делать подобные вещи, так что структуры могут чисто поместиться на страницах памяти, и такие, как.

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

-121--3219658-

Можно попробовать {\tt {\char '173}} :

\newcommand{\lcb}{{\tt {\char '173}}}

См. это . Кажется, работает на меня.

-121--424445-

С двух лет работы с CF, для меня самые большие готчи:

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

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

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

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

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

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

Ура

Iain

EDIT: Oh, и по причинам, наиболее известным Adobe, если вы используете пробную версию, вы получите прекрасный комментарий FAT HTML перед всеми вашими выходами - независимо от того, действительно ли вы выводите HTML. И да, потому что комментарий появляется перед вашим DTD, быть готовы для некоторых браузеров (не глядя ни на кого в частности!), чтобы сделать это как дерьмо. Опять же - возможно, они переосмыслили это в новой версии...

EDIT # 2: Вы также упомянули переписывание URL - где я работал, мы делали это постоянно - никаких проблем. Если вы работаете на Apache, используйте mod_rewrite, если вы работаете на IIS купить ISAPI Rewrite 3.

2
ответ дан 6 December 2019 в 09:19
поделиться

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

Плюсы:

Coldfusion - это легко учиться и быстро получить что-то наладить и работать от начала до конца.

Минусы:

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

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

1
ответ дан 6 December 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: