Но из концепции и некоторых примеров реализации я понял, что мы реализуем код на стороне сервера для достижения этой природы кода.
Код реализуется вездевы делаете неблокирующий интерфейс.То, что сервер делает, не имеет отношения к тому, использует ли клиент блокирующий или неблокирующий пользовательский интерфейс, и то, что делает клиент, не имеет никакого отношения к тому, использует ли сервер блокирующий или неблокирующий пользовательский интерфейс.
if (например, почтальон отправляет HTTP-запрос на сервер) запрос должен ждать ответа сервера, тогда какой смысл неблокировать ввод-вывод?
чтобы не тратить ресурсы.
Давайте сначала рассмотрим простое консольное приложение, которое работает в сети, а затем что-то делает с результатами.В этом случае очень мало пользы от неблокирующего ввода-вывода, так как приложение просто будет сидеть и ждать, когда что-то сделает.
Теперь давайте рассмотрим простое консольное приложение, которое работает с 50 различными веб-сайтами.ресурсы и сопоставляет ответы.Теперь неблокирующий ввод / вывод более полезен, потому что при блокирующем вводе / выводе ему придется либо получать один ресурс за другим, либо ускорять 50 потоков.С неблокирующим вводом-выводом небольшое количество потоков - это все, что нужно для того, чтобы набрать 50 ресурсов и оперативно реагировать на каждый возвращающий ответ.
Теперь давайте рассмотрим версию этого приложения с графическим интерфейсом, которая хочетостаются чувствительными к пользовательскому вводу и работают на устройствах с низким энергопотреблением, в которых заблокированные потоки становятся все более дорогими.Преимущества описанного выше увеличиваются.
Наконец, рассмотрим веб-приложение, которое выполняет ввод-вывод как с клиентом, так и с клиентом для базы данных, файловой системы и, возможно, других веб-приложений.Он может иметь несколько запросов одновременно, и блокировка ввода-вывода, который он выполняет с клиентом, или любого из операций ввода-вывода, которые он выполняет с db, файлом или другими приложениями, будет стоить поток, что приведет к ограничению масштабируемости.на сколько запросов он может обрабатывать одновременно.Не блокировка ввода / вывода позволяет использовать потоки для других запросов, пока ввод / вывод находится в состоянии ожидания.