我正在开发一个ColdFusion站点,其中数据存储在数据库内的WDDX数据包中,这真的很痛苦。 (我不知道为什么这些值不只是存储在另一个表中。)
我之前没有使用过WDDX,我能找到的唯一文档看起来很旧。所以我很好奇是否还有人使用WDDX,如果有的话,为什么?
答案 0 :(得分:7)
我使用WDDX在一个不需要数据库的小应用程序中存储配置值。我可以使用ini文件和GetProfileString()
,但WDDX更方便。
它是XML,所以理论上你可以用它来做AJAX(在原始意义上)。特别是因为在CF8之前没有对JSON的原生支持。
您也可以将它用作XSL转换的输入,因此您不必编写自己的XML来表示结构或查询等CF数据类型。
最后但并非最不重要的是,您可以将其用作在数据库中存储不同结构化数据的可扩展方式(例如,包含不同情况的日志消息)。我不确定为什么这对你的情况很痛苦,但也许它更像是一个架构问题而不是WDDX问题(?)。
归结为:快速简单,便携且安全(无需Evaluate()
或定制管道)方式序列化和反序列化(即“存储”或“持久化”)非常方便)任何CF数据类型。
答案 1 :(得分:4)
对于CMS中的页面块配置数据,我们这样做。这个决定可以追溯到CF5,我现在可能会使用更简单的XML格式(存储的数据只是标量值的序列化哈希值),但它是一种方便的方法,可以避免每次需要的数据的额外多行查询的开销访问父记录。
我想文档没有太大变化,因为只有这么多你可以写一个简单的数据序列化操作:)
<cfwddx action="cfml2wddx" input=#raw_data# output="encoded_data"/>
<cfwddx action="wddx2cfml" input=#encoded_data# output="decoded_data"/>
答案 2 :(得分:2)
自从CF8出局以来,我使用的是JSON而不是WDDX。
两者都非常适合序列化一些不需要查询的数据字段,同时保持DB不变。我会在任何一天将JSON带到WDDX上。 :)
答案 3 :(得分:1)
我出于各种原因使用过它。其中之一是允许两个不同的ColdFusion服务器之间的类似Web服务的功能。因为它只是XML的一种风格,因此是纯文本,所以它不需要比使用CFHTTP的简单HTTP调用更复杂。而且,由于它是WDDX,它很容易转换回CF结构。
回到CF5天,这非常重要。即使是现在,当CF提供一些非常强大的XML解析工具时,原生数据结构仍然更容易使用。
答案 4 :(得分:1)
我用它来存储查询结果和结构。它很有用,因为它可以在一个操作中捕获多个表。对于WDDX解决的问题,JSON是一种更现代的方法。如果我有一个选择,我会选择JSON,因为它具有更强的互操作性。
答案 5 :(得分:0)
我上次使用它是为了序列化表单范围。不记得我需要的原因,但是表格有很多变化,并且重新填充我可以反序列化WDDX的字段,而且一切都很好。
现在还没用过它。
答案 6 :(得分:0)
我以前存储了一些关于产品运输的信息 - 基本上哪些产品放在哪些盒子里。在设计此应用程序时,无需将该信息存储在DB中的单独行中,因此构建的包含该信息的结构已使用WDDX序列化并填充在数据库中。
答案 7 :(得分:0)
我不得不用它来存储cookie中的结构,因为我曾经为一家私人公司工作,该公司建立了禁用会话变量范围的电子商务网站。这不是出于任何实际的用户安全原因。如果在启用了会话变量的服务器上运行,它们的后端管理应用程序会出于某些未知原因而自行陷入困境。因此,您知道,也许修复导致问题的任何问题,或者可能在单独的服务器上运行管理系统,它们会禁用会话,因为它是解决问题的“最快,最便宜,最简单”的方法。
很高兴我不再在那里工作了。