9

我正在一个 ColdFusion 站点上工作,其中数据存储在数据库内的 WDDX 数据包中,这真的很痛苦。(我不知道为什么这些值不只是存储在另一个表中。)

我以前没有使用过 WDDX,而且我能找到的关于它的唯一文档似乎很旧。所以我很好奇是否有人还在使用 WDDX,如果是,那是为了什么?

4

8 回答 8

7

我使用 WDDX 将配置值存储在一个不需要数据库的小型应用程序中。我可以使用 ini 文件和GetProfileString(),但 WDDX 更方便。

它是 XML,所以理论上你可以用它来做 AJAX(在原始意义上)。特别是因为在 CF8 之前没有对 JSON 的原生支持。

您还可以将其用作 XSL 转换的输入,因此您不必编写自己的 XML 来表示 CF 数据类型,如结构或查询。

最后但同样重要的是,您可以将其用作在数据库中存储各种结构化数据的可扩展方式(例如,涵盖不同情况的日志消息)。我不确定为什么这对您来说很痛苦,但也许它更多的是架构问题而不是 WDDX 问题(?)。

归结为:拥有快速、简单、便携且安全(无需Evaluate()或需要自定义管道)序列化和反序列化(即“存储”或“持久化”)任何 CF 数据类型的方法是很方便的。

于 2009-06-23T08:22:43.490 回答
4

我们这样做,对于我们的 CMS 中的页面块配置数据。这个决定可以追溯到 CF5,我现在可能会使用更简单的 XML 格式(存储的数据只是标量值的序列化哈希),但它是一种方便的方法,可以避免每次都需要额外的多行查询数据的开销访问父记录。

我想文档并没有太大变化,因为您只能写很多关于简单数据序列化操作的内容:)

<cfwddx action="cfml2wddx" input=#raw_data# output="encoded_data"/>
<cfwddx action="wddx2cfml" input=#encoded_data# output="decoded_data"/>
于 2009-06-23T06:41:55.703 回答
2

自从 CF8 出来后,我就使用 JSON 而不是 WDDX。

两者都非常适合序列化一些不需要查询的数据字段,同时保持数据库不变。我会在任何一天通过 WDDX 使用 JSON。:)

于 2009-06-25T18:40:45.207 回答
1

我出于各种原因使用它。其中之一是允许在两个不同的 ColdFusion 服务器之间实现类似 Web 服务的功能。由于它只是 XML 的一种风格,因此是纯文本,它只需要使用 CFHTTP 进行简单的 HTTP 调用就可以了。而且,由于它是 WDDX,它很容易转换回 CF 结构。

在 CF5 时代,这真的很重要。即使是现在,当 CF 提供了一些非常强大的 XML 解析工具时,原生数据结构仍然更容易使用。

于 2009-06-23T12:49:27.883 回答
1

我用它来存储一堆查询结果和结构。它很有用,因为它可以在一次操作中捕获多个表。JSON 是一种更现代的 WDDX 解决方法。如果可以选择,我会选择 JSON,因为它具有更好的互操作性。

于 2012-11-26T22:01:27.963 回答
0

我最后一次使用它是为了序列化表单范围。不记得我为什么需要这样做了,但是表单有很多变化,并且为了重新填充我可以反序列化 WDDX 的字段,一切都很好。

现在已经有一段时间没有使用它了。

于 2009-06-24T21:48:32.153 回答
0

我曾经存储一些关于产品运输的信息——基本上,哪些产品装在哪些盒子里。在设计此应用程序时,不需要将该信息存储在 DB 中的单独行中,因此构建的包含该信息的结构使用 WDDX 序列化并填充到 DB 中。

于 2009-06-24T21:55:06.697 回答
0

我不得不使用它来将结构存储在 cookie 中,因为我曾在一家创建电子商务网站的混蛋公司工作,该公司禁用了会话变量范围。这不是出于任何实际的用户安全原因。如果在启用了会话变量的服务器上运行,他们的后端管理应用程序出于某种未知原因会自行崩溃。因此,您知道,可能不是修复导致问题的任何原因,或者可能在单独的服务器上运行管理系统,而是禁用会话,因为这是解决问题的“最快、最便宜和最简单”的方法。

很高兴我不再在那里工作了。

于 2009-06-29T18:46:08.613 回答