哪种方式可以向客户返回数量清单?

时间:2012-02-16 07:00:47

标签: c# jquery asp.net .net ajax

我想向客户返回产品(客户可以购买)的可用数量列表(例如,1,2,3 ......,200)。我们正在考虑三种方法:

  • 将完整的数量列表返回给客户端,客户端只需要绑定它即可。这是当前的工具,易于实现,但浪费带宽。
  • 返回分离的最小数量和最大数量,客户端必须构建一个列表然后绑定它们。这是我的想法,因为我们可以避免解析。
  • 以1-200的形式返回一个字符串,然后客户端必须解析数字,构建列表,然后绑定它们。这是我的拼贴画的想法,他说他在某处读过它(以为他不记​​得在哪里),这是返回数量清单的流行方式。

我们目前的要求不支持分段数量(例如,我们不支持1-20,40-50,100-200数量,我们只支持1-200)

这应该是解决这个问题的方法?我们在jQuery上使用ASP.NET和AJAX。

谢谢。

1 个答案:

答案 0 :(得分:1)

选项1:返回范围内所有整数的列表对我来说似乎非常浪费。谁知道未来需要多少数量?如果您的产品可以订购成千上万,这可能会导致很大的问题。

选项3:当输入需要人类可读或可编辑时,可解析格式很有用。一个很好的例子是MS Word中的打印对话框;用户可以选择打印页面“1,2,7,9,11”或“5-15”等。但是解析为bug带来了全新的可能性。即使在简单的例子“1-200”中,也有可能将“ - ”解释为给出“-200”或类似的减号。如果界面是机器对机器,我总是喜欢一个明确的语义界面。通过明确定义的接口(例如参数“rangeFrom”和“rangeTo”),解释的模糊性被消除,并且要解决的唯一问题是实现。我不知道你的客户端是什么,但是在任何产生1到200整数列表的语言中都应该是非常简单的。

我肯定会选择选项2:这是一个明确定义的界面。它易于构建,并且在线路上非常有效。

根据您希望面向未来的方式,您可以考虑选择选项2并伪装一种重载。所以今天你会保持简单,只需返回以下内容:

{ 
  "listType": "range",
  "rangeFrom": 1,
  "rangeTo": 200
}

客户端应该检查“listType”返回值,目前它总是期望它是“范围”。但是在将来你可以添加其他类型。对于axample

{
  "listType": "increment",
  "rangeFrom": 2,
  "rangeto": 20,
  "inc": 2
}

// Interpreted by client as:
//   2, 4, 6, 8, 10, 12, 14, 16, 18, 20


{
  "listType": "valuelist",
  "values": [1, 2, 5, 20] 
}

// Interpreted by client as:
//   1, 2, 5, 20

今天这将是简单而有效的,但如果以后有新的要求而不会破坏兼容性,那么您可以轻松扩展。