Pac*_*ace 11 asynchronous http synchronous
题:
我被告知最佳实践表明,长时间运行的http Web请求应该转换为更短的异步请求,并具有轮询完成的机制.
为什么?
重要区别:
我正在开发一个Web服务API.它不是由浏览器调用(它会挂在负载上),而是由富客户端(无论如何异步调用远程服务)和脚本(可以执行相同的异步技巧)调用
动机:
我想知道,因为我正在尝试决定何时应该异步请求,截止点是什么?我正在开发一个基于Web的API,其请求需要0.001秒到400秒(以及介于两者之间的任何地方),具体取决于请求(不是参数,而是他们调用的实际方法).
我可以使所有内容异步(除了轮询命令完成),但这会使API客户端完成的工作变得复杂(即从请求中获取结果,轮询完成等)
据我所知,我也可以使一切都同步,因为无论如何都要完成相同数量的工作,所以看起来负载将是相似的.
此外,我使用的所有Web服务似乎都遵循混合模型,因此他们必须以某种方式做出决定.
我真正回答这个问题的唯一方法就是知道为什么存在最佳实践.
Ray*_*nos 18
异步API不会阻止.每个同步调用都会等待并阻止您的结果返回.这只是一个睡眠线程和浪费的计算.
如果您需要发生某些事情,请发送异步请求,并在请求返回时进行进一步的计算.这意味着您的线程处于闲置状态,可以接受其他工作.
异步请求是扩展到数千个并发用户的方法.
但这使API客户端完成的工作变得复杂
这只是API设计的问题.通常,您可以使用回调来调用Web API来处理此问题.不需要轮询.
WebService.Call("someMethod" (data) -> {
// do something when data returns.
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19230 次 |
最近记录: |