【发布时间】:2012-03-02 07:23:38
【问题描述】:
我正在基于新的 ASP.NET Web API 创建一个 Web API。我试图了解处理同时提交多个数据集的人的最佳方式。如果他们有 100,000 个请求,最好让他们一次提交 1,000 个。
假设我的联系人控制器中有一个新的联系人方法:
public string Put(Contact _contact)
{
//add new _contact to repository
repository.Add(_contact);
//return success
}
允许用户“批量”提交新联系人的正确方法是什么?我在想:
public string BatchPut(IEnumerable<Contact> _contacts)
{
foreach (var contact in _contacts)
{
respository.Add(contact);
}
}
这是一个好习惯吗?这是否会解析带有 JSON 联系人数组的 GET 请求(假设它们的格式正确)?
最后,关于如何最好地响应 Batch 请求的任何提示?如果 300 个中有 4 个失败了怎么办?
谢谢一百万!
【问题讨论】:
-
在请求大小、用户数量、用户类型、数据质量、时间限制和数据库可靠性方面,您对服务器有什么保证?这些会影响您可用的设计选择吗?
-
我有一个 API 可以为每个 API 请求创建 1 个作业。到目前为止,API 一次只接受 1 个作业。这个限制让需要发出多达 200,000 个请求的大客户感到头疼。每个单独的 API 调用都作为一条消息进入 Amazon SQS,因此并发性不是问题,只是让大量客户感到头疼。谢谢!
-
您的业务流程是否允许异步处理?例如,当我在一家保险公司工作时,我们习惯于排队计算报价,因此客户提交数据并在创建报价时进行轮询。这需要一两到 30 分钟,具体取决于可用资源。
-
是的异步...我进行授权检查,将请求格式化为 JSON 对象,然后将其传递给 Amazon 队列。单独的工作角色处理作业。
-
我正在做类似的事情并更新了我的答案以反映我的策略。
标签: asp.net-mvc-4 asp.net-web-api