代码之家  ›  专栏  ›  技术社区  ›  Jherico

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

  •  3
  • Jherico  · 技术社区  · 14 年前

    我坚定地站在对象引用阵营中,而其他人则认为这个模型在某种程度上没有那么“宁静”,只有在有令人信服的理由的情况下才应该继续使用它 使用deep objects版本。

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

    • 给定对象没有规范化的表示形式,本质上破坏了客户机和服务器上的缓存机会。
    • 获取deep属性的所有逻辑都必须能够依赖于获取包含deep对象的顶层项,因为您永远不知道deep属性是否存在
    • 模式变得毫无用处,因为对象之间的每个连接都必须设置为至少出现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>
    

    嘎嘎小姐

    <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>
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   bdoughan    14 年前

    对于可以通过URI查找资源的REST,我支持使用引用。我看到人们使用链接:

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

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

    <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> 
    
        2
  •  1
  •   johnbasil    14 年前

    我创建的许多xml都是为XSLT样式表处理而设计的。在这种情况下,深度表示有一个优势,因为XSL可以更加简洁(高效?)处理深度关系而不是引用关系。

    这种考虑对你可能重要,也可能不重要。我想这取决于xml是否被解析为文档树。