2011-09-24 90 views
0

我正在開發一個帶有返回數據庫結果的函數的WebService,這意味着一個MxN數組。我的問題是,什麼是更好的方式在WSDL定義是:在wsdl中定義多維數組的最佳實踐

  1. 定義行作爲(字符串)列的順序,確定結果集爲行的序列,把這個結果集爲一個消息
  2. 定義行作爲(字符串)列的序列,把這樣的行的順序插入到消息中直接

因此,它是更好/清潔劑/更好於行包裝成一個自己的數據類型,並把這個一個到響應消息或保留自己的數據類型並將行序列直接放入消息中?

謝謝!

回答

2

對於行定義一個元素,該元素具有與結果列相同的子元素。

<row> 
    <field1>...</field1> 
    <field2>...</field2> 
    ... 
    <fieldN>...</fieldN> 
</row> 

然後您返回一個包裝的行元素列表。

<rows> 
    <row> 
     ... 
    </row> 
    <row> 
     ... 
    </row> 
    ... 
    <row> 
     ... 
    </row> 
</rows> 

(我使用row/rows這裏爲簡便起見,您可以命名任何你想要的元素,通常反映了什麼行的數據代表的名稱)。

+0

好吧之後,我把行放入我的消息?將行元素放入我的消息中並不是很好的風格?它保存了一個Java對象,這就是我要求的原因;-) – strauberry

+0

@strauberry:我明白你在說什麼。爲什麼有一個包裝,當我可以直接寫元素?是對的嗎?那麼...... **第一件事情**,您將XML更容易讀取,因爲行被分組在父母之下,**第二**,但更重要的是您獲得了互操作性。爲了符合WS-I標準,SOAP消息的soap:body必須只有一個孩子。如果將行直接放入消息中(無父包裝器),則違反了此規則和鬆散的互操作性。在消息內部更深層次,它並不重要,但在這一點上,你鬆了頭號:可讀性。 – 2011-09-24 19:05:36

+0

@strauberry:這是使用Web服務時的最佳實踐的起點:http://en.wikipedia.org/wiki/Web_Services_Interoperability – 2011-09-24 19:09:09