ColdFusion: Кто-нибудь использует WDDX? - PullRequest
9 голосов
/ 23 июня 2009

Я работаю на сайте ColdFusion, где данные хранятся в пакетах WDDX внутри базы данных, и это настоящая боль. (Я понятия не имею, почему значения не просто хранятся в другой таблице.)

Я раньше не использовал WDDX, и единственная документация, которую я могу найти, кажется довольно старой. Поэтому мне интересно, если кто-нибудь еще использует WDDX, и если да, то зачем?

Ответы [ 8 ]

7 голосов
/ 23 июня 2009

Я использую WDDX для хранения значений конфигурации в небольшом приложении, которое не требует базы данных. Я мог бы использовать INI-файл и GetProfileString(), но WDDX намного удобнее.

Это XML, поэтому теоретически вы можете использовать его для создания AJAX (в первоначальном смысле). Тем более, что не было встроенной поддержки JSON до CF8.

Вы также можете использовать его в качестве входных данных для преобразований XSL, поэтому вам не нужно создавать собственный XML для представления типов данных CF, таких как структуры или запросы.

И последнее, но не менее важное: вы можете использовать его как расширяемый способ хранения различных структурированных данных в базе данных (например, регистрировать сообщения, которые охватывают разные случаи). Я не уверен, почему это проблема в вашем случае, но, возможно, это скорее архитектурная проблема, чем проблема WDDX (?).

Это сводится к следующему: удобно иметь быстрый и простой, но переносимый и безопасный (не требуется Evaluate() или нестандартный способ подключения) способ сериализации и десериализации (т. Е. «Сохранение» или «сохранение») любого Тип данных CF.

4 голосов
/ 23 июня 2009

Мы делаем это для данных конфигурации чанка страницы в нашей CMS. Решение датируется CF5, и я мог бы использовать более простой формат XML (данные хранятся в виде сериализованного хэша скалярных значений), но это удобный способ избежать лишних многострочных запросов данных, которые требуются каждый раз. Доступ к родительской записи.

Я полагаю, что документация не сильно изменилась, так как о простой операции сериализации данных можно написать очень много:)

<cfwddx action="cfml2wddx" input=#raw_data# output="encoded_data"/>
<cfwddx action="wddx2cfml" input=#encoded_data# output="decoded_data"/>
2 голосов
/ 25 июня 2009

С тех пор, как вышел CF8, я использовал JSON вместо WDDX.

Оба отлично подходят для сериализации некоторых полей данных, к которым не нужно выполнять запросы, сохраняя при этом БД без изменений. Я возьму JSON над WDDX в любой день. :)

1 голос
/ 27 ноября 2012

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

1 голос
/ 23 июня 2009

Я использовал его по разным причинам. Одним из таких решений было предоставление функциональности, подобной веб-сервису, между двумя разрозненными серверами ColdFusion. Поскольку это всего лишь разновидность XML и, следовательно, простой текст, для него не требуется ничего сложнее, чем простой HTTP-вызов с использованием CFHTTP. И, поскольку это WDDX, он очень легко переводится обратно в структуры CF.

В дни CF5 это было действительно важно. Даже сейчас, когда CF предлагает довольно мощные инструменты для синтаксического анализа XML, с нативными структурами данных все еще проще работать.

0 голосов
/ 29 июня 2009

Мне пришлось использовать его для хранения структур в файлах cookie, потому что я работал в небольшой компании, которая создавала веб-сайты электронной коммерции с отключенной областью действия переменной сеанса. Это было не по какой-либо практической причине безопасности пользователя. Их административное приложение для бэкэнда по какой-то неизвестной причине обрушилось бы само на себя, если бы работало на сервере с включенными переменными сеанса. Таким образом, вместо того, чтобы, вы знаете, возможно, исправить то, что вызывало проблему, или, возможно, запустить систему администратора на отдельном сервере, они отключили сеансы, потому что это был «самый быстрый, дешевый и самый простой» способ решения проблемы. *

Так рада, что я там больше не работаю.

0 голосов
/ 25 июня 2009

Раньше я хранил некоторую информацию о доставке товара - какие товары в какие коробки идут, в основном. Во время разработки этого приложения не было необходимости хранить эту информацию в отдельных строках в БД, поэтому созданная структура, содержащая эту информацию, была сериализована с помощью WDDX и помещена в БД.

0 голосов
/ 25 июня 2009

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

Давным-давно не использовал его.

...