什么是非阻塞Rest客户机?

什么是非阻塞Rest客户机?,rest,asynchronous,nonblocking,jersey-2.0,Rest,Asynchronous,Nonblocking,Jersey 2.0,我已经读了很多东西来解释非阻塞I/O和异步I/O之间的细微差别,但大多数似乎与服务器端编程有关。这似乎也有道理。但就Rest客户机而言,非阻塞与异步I/O是否具有相关性 我已经在网上花了很多时间,但恐怕我仍然无法理解有一个非阻塞Rest客户端的区别或者更确切地说是意义。我更关心泽西岛的客户。是的,API说它支持异步客户端,使用Future.isDone()(ref:)可以避免对Future对象的阻塞“get”调用,但是如果我的Rest客户端发出Post请求,该如何处理?它只是异步的还是异步的和非

我已经读了很多东西来解释非阻塞I/O和异步I/O之间的细微差别,但大多数似乎与服务器端编程有关。这似乎也有道理。但就Rest客户机而言,非阻塞与异步I/O是否具有相关性

我已经在网上花了很多时间,但恐怕我仍然无法理解有一个非阻塞Rest客户端的区别或者更确切地说是意义。我更关心泽西岛的客户。是的,API说它支持异步客户端,使用Future.isDone()(ref:)可以避免对Future对象的阻塞“get”调用,但是如果我的Rest客户端发出Post请求,该如何处理?它只是异步的还是异步的和非阻塞的?如果有人能帮助我了解情况,我将不胜感激

感谢并问候

我建议您阅读Microsoft关于此主题的文章

术语“非阻塞”实际上意味着相同的事情,无论它发生在服务器端还是客户端。正如上面的文章所指出的,阻塞意味着调用的线程停止处理,直到调用完成。本文中描述的任务异步模式可以等待Rest调用,而不是阻塞线程。通常,如果一个方法返回一个任务,并且该方法的后缀为async,那么它将是一个非阻塞调用。这意味着它可以与其他调用同时运行,因此不需要按顺序运行调用。它们可以并行运行

下面是一个示例,其中非阻塞的rest调用是并行进行的,并等待它们,以便它们不会相互阻塞。没有并行的简单for循环将获得相同的结果,因为它将按顺序启动调用,但不会阻塞每个调用

var tasks = new List<Task<Response<Person>>>();

var client = clientFactory.CreateClient();

for (var i = 0; i < 100; i++)
{
    tasks.Add(client.GetAsync<Person>(new Uri("JsonPerson", UriKind.Relative)));
}

var results = await Task.WhenAll(tasks);
var tasks=newlist();
var client=clientFactory.CreateClient();
对于(变量i=0;i<100;i++)
{
添加(client.GetAsync(新Uri(“JsonPerson”,UriKind.Relative));
}
var结果=等待任务.WhenAll(任务);

REST使用哪种底层协议?我认为这些术语在HTTP中并不重要,但我不是这方面的专家。你能详细说明你的问题吗?