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