gpt4 book ai didi

xml - 与文档内引用的浅层表示相比,深层 XML 表示是否有隐藏的优势?

转载 作者:数据小太阳 更新时间:2023-10-29 02:37:51 25 4
gpt4 key购买 nike

我参与了关于对象组的 XML 表示的辩论。给定艺术家、专辑和轨道等实体的对象层次结构,对象之间具有大量连接性,使用深度 XML 与使用对象引用格式化给定对象图的 XML 表示形式的优缺点是什么。

我坚定地站在对象引用阵营中,而其他人则认为这个模型在某种程度上不那么“RESTful”,并且只有在有令人信服的理由使用深层对象时才应该追求它版本。

我认为以下是深层物体的基本缺陷

  • 循环引用意味着图中可能存在同一对象的多个版本。有些对象必然是不完整的。
  • 如果您选择通过在图表中仅包含给定对象的一个​​规范版本来避免循环引用,那么您将承担实现逻辑以确定图表中的哪个实例应被视为规范的负担。此外,如果您正在创建一项服务,您会将这种负担同时放在客户端和服务器上。此外,这种逻辑必须解决大量的歧义。对象的哪个实例应该是规范的?前序遍历第一次遇到?离根最近的(广度优先遍历)?特定的亲子关系?
  • 没有给定对象的规范表示,基本上破坏了客户端和服务器上的缓存机会。
  • 获取深层属性的所有逻辑都必须能够回退到获取包含深层对象作为顶级项目,因为您永远不知道深层属性是否会存在
  • 架构变得无用,因为对象之间的每个连接都必须设置为至少出现 0 次,以避免循环引用的无限回归。

我的问题本质上是,是否有任何我错过的关于浅表表示的重要论据,以及反驳论据是什么

这是一个深对象的小例子

<artist id="1234">            <!-- This object is of type Artist in the Schema-->
<name>Lady GaGa</name>
<sampleTrack id="1235"> <!-- This object is of type Track in the Schema-->
<name>Poker Face</name>
<album id="1236"> <!-- This object is of type Album in the Schema-->
<name>The Fame Monster</name>
...
</album>
</sampleTrack>
<album id="1236">
....
<track id="1235">
</track>
</album>
</artist>

下面是一个使用对象引用的类似例子

Lady Gaga

<track id="1235">           <!-- This object is of type Track in the Schema-->
<name>Poker Face</name>
<album id="1236"/> <!-- This object is of type Reference in the Schema-->
</track>

<album id="1236">
<name>The Fame Monster</name>
<track id="1235">
</album>

最佳答案

就可以通过 URI 查找资源的 REST 而言,我支持您使用引用。我看到人们所做的是使用链接:

如果可以使用以下 URI 来查找相册: - http://www.example.com/albums/1236

然后是 http://www.example.com/tracks/1235 的 XML 表示可能看起来像:

<track id="1235">
<name>Poker Face</name>
<album link="http://www.example.com/albums/1236"/>
</track>

点击相册链接,您将获得:

<album id="1236"> 
<name>The Fame Monster</name>
<track link="http://www.example.com/tracks/1235">
</album>

关于xml - 与文档内引用的浅层表示相比,深层 XML 表示是否有隐藏的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com