2013-06-05 56 views
1

我有一個關於最佳實踐的問題。假設我有一個返回員工ID和員工姓名的Web方法。現在,由於我是Web服務新手,我們(客戶端(C#)和I(Java))對返回類型List<String>達成一致,字符串格式爲employee id,employee name。一切都很好。程序運行並完成這項工作。Web服務(Web方法)字符串返回類型

現在,有一天,我與另一位開發人員討論了返回類型,她建議我返回數據的方式不對,我應該以XML格式返回String,以便典型的輸出可能如下所示不帶格式),

<root><employee><employeeId>1234</employeeId><employeeName>firstname lastname</employeeName></employee></root> 

我認爲,在這種情況下,你客戶是不必要的,浪費帶寬和增加的開銷恢復50%以上的非數據(XML標籤)。而且她反駁說,如果不明顯的情況下,用戶沒有權限訪問某些內容,或者沒有任何內容可以返回,但錯誤代碼或服務器上出現了問題,即當您需要返回除實際數據本身以外的其他內容時, XML字符串很有幫助,因爲您可以插入標籤。這是一個有效的論證,那麼對Web服務有着豐富經驗的人可以在這裏提供一些啓示嗎?

+0

我會建議不要使用這些方法。爲了獲得更輕鬆的體驗,請使用RESTful服務,而返回的結果將是JSON格式的字符串,易於從生產者編寫並在消費者端進行解釋。更多信息:[具象狀態轉移](http://en.wikipedia.org/wiki/Representational_state_transfer) –

回答

0

基本上當你的名單序列將被轉換爲XML雖然格式是這樣的:

<Value>EmployeeId, EmployeeName</Value> 

的標籤是不實際不必要的,事實上它們是因爲它們保存數據有用,它的conctrete數據類型。我不喜歡返回一個XML字符串,因爲它很容易出錯,您可能總是需要更新字符串的值。我建議返回一個包含結果集和錯誤描述屬性的對象。

public class ReturnObject 
{ 
    public List<Employee> list {get; set;} 
    public String ErrorDescription {get; set;} 
} 

public class Employee 
{ 
    public int EmployeeID {get; set;} 
    public string EmployeeName {get; set;} 
} 

在這裏您的Web服務將返回一個具體類型與附加屬性「ErrorDescription中」如果你需要返回任何驗證或認證的錯誤,你可以使用。使用SoapUI來測試序列化的返回對象是XML。