c# - 哪种方式返回数量 list 给客户?

标签 c# jquery asp.net .net ajax

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

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

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

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

谢谢。

最佳答案

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

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

我肯定会选择选项 2:它是一个定义明确的界面。它易于构建,并且通过网络非常高效。

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

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

客户端应该检查“listType”的返回值,目前,它总是期望它是“range”。但将来您可以添加其他类型。例如

{
  "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

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

关于c# - 哪种方式返回数量 list 给客户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306896/

相关文章:

c# - 找不到类型或命名空间名称 'ListBoxItem'(是否缺少 using 指令或程序集引用?)

c# - 我的模型中缺少帐户、ManagerViewModel 文件夹和 ApplicationUser.cs 类

javascript - jQuery - 在 mousedown 上创建一个新的可拖动 div,然后可以在同一操作中拖动它

javascript - 即使以 Json 格式发送数据后,莫里斯图也无法处理动态数据

c# - 处理并发文件写入

c# - SoundPlayer和Windows 7 WAV文件

c# - 读取时数据从内存流中截断

jquery - 是否需要添加整个jquery文件

asp.net - 我应该将 MDF 文件附加到 SQL Express 还是将真实的部署脚本附加到 SQL Server?

ASP.net 设计问题,如果在 HTTPS 上则强制重定向到 HTTP