1

我有一个关于最佳实践的问题。假设我有一个返回员工 ID 和员工姓名的 Web 方法。现在,由于我是 Web 服务的新手,我们(客户端(C#)和我(Java))同意返回类型List<String>和字符串格式是employee id,employee name. 到目前为止一切都很好。程序运行并完成工作。

现在,前几天,我正在与另一位开发人员讨论返回类型,她建议我返回数据的方式不正确,而是我应该以 XML 格式返回 String,这样典型的输出可能看起来像(这里没有格式化),

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

我认为,在这种情况下,您将 50% 以上的非数据(XML 标签)返回给客户端,这是不必要的,并且会浪费带宽并增加开销。她反驳说,在不明显的情况下,例如,用户无权访问某些内容或没有什么可以返回但错误代码或服务器上出现问题,即当您需要返回实际数据本身以外的其他内容时, XML 字符串很有帮助,因为您可以插入标签。这是一个有效的论点,所以对 Web 服务有良好经验的人可以在这里阐明一些观点吗?

4

1 回答 1

0

基本上,当您的列表被序列化时,它将被转换为 XML,尽管格式如下:

<Value>EmployeeId, EmployeeName</Value>

标签实际上并不是不必要的,实际上它们很有帮助,因为它们保留了数据并且它是具体的数据类型。我不喜欢返回 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。

于 2013-06-05T04:08:09.107 回答