Почему протокол HTTP был спроектирован так, чтобы сначала не иметь соединения? - PullRequest
2 голосов
/ 21 июня 2009

Насколько мне известно, Ajax предоставляет обходной путь для поведения, ориентированного на соединение с протоколом HTTP. Но почему сначала протокол HTTP не был ориентирован на соединение?

Ответы [ 6 ]

11 голосов
/ 21 июня 2009

Потому что это было предназначено для использования в вещах, где соединения не имеют смысла.

Он был разработан как протокол передачи гипертекста, что означает, что его обязанностью было просто разрешить отправку сообщений в форме «пожалуйста, отправьте мне документ X» и «вот документ X, как вы просили».

Для чего такой протокол должен использовать постоянное соединение?

6 голосов
/ 21 июня 2009

и простота.

Ретроспективно, вероятно, не такая уж плохая вещь, поскольку это означает, что HTTP прост, что означает, что его можно легко использовать для простых вещей. И вы можете использовать его для более сложных / сложных вещей, которые нуждаются в состоянии, создавая слои поверх него.

Именно эта простота получила широкое распространение HTTP и сделала его привлекательным. Если бы это было не просто, то это был бы просто еще один сложный протокол, который n-one использует, если не обязан. Если вы мне не верите, можете ли вы сказать мне, почему вы не пишете свои приложения ajax, используя RPC для связи и X11 для отображения / рендеринга? : D

Помните, что HTTP изначально был разработан для реализации вики, такой как хранилище информации для чтения / записи, а не интернет-магазины, банковские операции, текстовые процессоры и т. Д. Я помню, как читал интервью с Тимом Бернье-Ли, где он был действительно счастлив, что вики получили широкое распространение как (если перефразировать) то, как он намеревался работать в сети. На практике этого не происходило в более широкой сети, и большинство сайтов отключают метод HTTP PUT, который должен был включить эту функцию.

4 голосов
/ 21 июня 2009

HTTP был изначально, а по-прежнему без связи. AJAX просто использует возможности JavaScript современного браузера для отправки XML (или часто JSON) на сервер без перезагрузки страницы.

Как уже упоминалось, основной причиной является масштабируемость. Поддержание активного соединения для каждого посетителя сайта будет невероятно ресурсоемким. Кроме того, фактом было то, что первоначальные создатели HTTP не предполагали никакой необходимости в системе с поддерживаемым соединением - идея HTTP состояла в том, чтобы просто отправить текстовый ответ на запрос и затем завершить.

4 голосов
/ 21 июня 2009
  1. AJAX НЕ является обходным решением для поведения, ориентированного на соединение. Это делается для того, чтобы на основе взаимодействия с пользователем вы хотели обновить только часть содержимого на стороне клиента вместо того, чтобы снова получать полную разметку с сервера. Он не устанавливает временное соединение между вашим браузером и веб-сервером.

  2. Если бы у каждого сервера было прямое соединение с каждым клиентом, размер интернета был бы ограничен парой миллионов пользователей.

2 голосов
/ 21 июня 2009

По причинам масштабируемости. Поддержание соединений использует ресурсы.

0 голосов
/ 21 июня 2009

Я думаю, что причины довольно просты - когда http был создан:

1) Большинство / все страницы были статическими 2) Предполагалось, что в связи с практически полным отсутствием коммерческого присутствия в Интернете, ссылки могут быть направлены на другой сайт.

Итак, статические страницы + нелокальный контент = протокол без соединения.

...