Как я уже упоминал в своей предыдущей статье (Для разработчиков fullstack, которые втайне являются backend-разработчиками - не бойтесь CSS), я боялся внешнего интерфейса. Помимо CSS, который время от времени все еще появляется в моих кошмарах, я также нашел такие термины, как TCP / IP, HTTP, RESTful API. и WebSockets очень устрашающе. Я уже упоминал ранее, почему я считаю, что вы, как разработчик полного цикла, должны знать основные аспекты интерфейса, так что давайте углубимся в это.

Я должен начать с того, что прошел курс «Введение в компьютерные сети», но он не акцентировал внимание на тех частях, которые мне нужны для повседневной работы.
Я не буду показывать примеры кода, потому что Интернет Я просто расскажу о концепциях в своей формулировке в надежде, что это сделает вещи более понятными для вас. (если вы найдете необходимые примеры кода, дайте мне знать, и я добавлю несколько!)

TCP / IP:

Прежде чем я получил свою нынешнюю должность SWE (инженер-программист), я прошел собеседование в Intel в качестве студента, только начав курс по сетям, о котором я упоминал ранее, и меня спросили об этом. Конечно, все пошло не так, и с тех пор это слово вызывает у меня неприятные чувства.

Я не считаю это важным для вашей повседневной работы с HTTP-сообщениями, но я расскажу об этом, чтобы у вас не было такого невежественного лица, когда о нем упоминают.

TCP (протокол управления передачей) является частью транспортного уровня (салат-латук).
После того, как уровень приложения (помидоры) получает данные из вашей программы (в нашем случае с использованием протокола HTTP), он обращается к транспортный уровень через порт (порт 80 звучит знакомо?), и TCP передает пакеты на интернет-уровень (сыр), который является частью TCP / IP (интернет-протокол), а затем на сетевой уровень ( мясо) отправляет пакеты по назначению.

Другой протокол связи без установления соединения (что такое без установления соединения? Мы поговорим об этом позже) - это UDP ( протокол дейтаграмм пользователя ). Несколько слов об этом: TCP надежнее, но UDP быстрее. Вы, вероятно, задаетесь вопросом, каков подходящий сценарий для отказа от надежности, поэтому хорошим примером может быть просмотр фильмов онлайн (законно, конечно), потому что это незаметно, если вы время от времени пропускаете пакет данных, который переводится к кадрам в видеопотоке.

Для получения дополнительной информации о TCP / IP посмотрите это видео.

HTTP:

Всем нам знакомо это слово. Он появляется как префикс каждой ссылки, но что это на самом деле означает? Хорошо, я буду точнее: HTTPS появляется в начале каждой ссылки. HTTPS - это защищенная версия протокола HTTP (для получения дополнительной информации о HTTPS нажмите здесь).

HTTP - самый используемый протокол в мире! это протокол на основе TCP / IP, и его цель - позволить веб-приложениям обмениваться данными и изменять данные (документы, изображения и т. д.).

Если два компьютера хотят обмениваться данными, они делают это в цикле запрос-ответ. Клиент отправляет запрос (обычно это веб-браузер), а сервер дает ответ.

HTTP - это протокол без установления соединения! клиент отправляет запрос - ›отключается -› сервер имеет готовый ответ - ›подключается -› отправляет- ›отключает.
HTTP может доставить любой тип данных! которые могут читать два компьютера.
HTTP - это протокол без сохранения состояния! Клиент и сервер знают друг о друге только во время текущего запроса. Как память рыбы (на самом деле это миф, согласно Google). Итак, каждое общение между ними похоже на первое (оххх, как романтично).

почему HTTP? потому что это наиболее удобный способ быстро и надежно перемещать данные в Интернете.

HTTP-сообщения представляют собой простой текст и их легко читать.
HTTP-сообщение состоит из трех частей: начальная строка, заголовки и тело.
Как упоминалось ранее, существует два типа HTTP-сообщений: запрос и ответ. .

Запрос:

В начальной строке мы видим три части: метод (GET), URI (/somedir/page.html) и версию HTTP (HTTP / 1.0).

Существует несколько возможных методов, наиболее часто используемые - GET и POST.
В нашем примере пользователь запрашивает файл HTML. URI сообщает серверу, где найти нужный файл (также известный как каталог).

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

Ответ:

В строке начала запроса есть две части: версия HTTP и статус запроса. В нашем примере запрос выполнен успешно, поэтому мы получили 200. Другие общие статусы: 304 - не изменен, 401 - не авторизован, 404 - не найден.
(Больше кодов статуса можно увидеть здесь).

API:

API означает интерфейс прикладного программирования. Это способ позволить программным компонентам взаимодействовать друг с другом, и это похоже на меню действий, которые вы можете использовать. Это набор методов и атрибутов, например, API мобильного телефона будет содержать микрофон, динамики, камеры в качестве атрибутов, а также вызовы, прослушивание музыки, съемку изображений, сохранение изображений в качестве методов.

Веб-службы - это набор правил и технологий, которые позволяют двум или более компонентам в Интернете взаимодействовать друг с другом - ›Веб-службы - это API!

Веб-API:

API через Интернет, доступ к которому можно получить по протоколу HTTP. Это концепция, а не технология. Мы можем создавать веб-API с использованием различных технологий, таких как Java, .NET и т. Д. Например, REST API Twitter предоставляют программный доступ для чтения и записи данных, с помощью которых мы можем интегрировать возможности Twitter в наше собственное приложение.

Примечание о веб-API ASP.NET: Веб-API ASP.NET - это расширяемая платформа для создания служб на основе HTTP, к которым можно получить доступ в различных приложениях на разных платформах, таких как Интернет, Windows, мобильные устройства и т. д.

ОТДЫХАТЬ:

Мой лучший друг не так давно начал работать на новом месте, и у них там есть ОТДЫХ. Ей было интересно, что это значит, но мы оба не знали ответа. Итак - это тебе, девочка :)

REST = REpresentational State Transfer. REST - это спецификация, которая определяет, как распределенные системы (= система, компоненты которой расположены на разных сетевых компьютерах) в Интернете должны взаимодействовать. Следовательно - это способ реализовать и использовать протокол HTTP.

RESTful API:

Это API, который следует правилам спецификации REST. Есть шесть ограничений, которым API должен следовать, чтобы быть RESTful, и вы можете найти их здесь.

Вернемся к моему другу - я думаю, что работа REST-человека состоит в том, чтобы настроить API, который они создают для своего продукта, в соответствии с ограничениями RESTful API.

WebSockets:

WebSocket - это протокол компьютерной связи, обеспечивающий полнодуплексные (= двунаправленные) каналы связи через одно TCP-соединение. Он отличается от HTTP тем, что обеспечивает постоянное соединение между клиентом и сервером, которое обе стороны могут использовать для начала отправки данных в любое время. Протокол HTTP не требует установления соединения, и связь начинается с отправки клиентом запросов на сервер.

Вот классная анимация, показывающая, как устанавливается соединение WebSocket:

Клиент отправляет запрос установления связи WebSocket, для которого сервер возвращает ответ подтверждения установления связи WebSocket. Как только соединение установлено, связь переключается на двунаправленный протокол, который не соответствует протоколу HTTP.

Итак, когда использовать HTTP-запросы, а когда - WebSockets?
В нашем рабочем проекте мы используем и то, и другое. WebSocket более сложен и предназначен для большей устойчивости. Вы можете использовать HTTP, когда вам нужно загрузить страницу в браузере, но для получения обновлений вам, вероятно, следует использовать WS.

Возьмем, к примеру, Facebook: вы можете использовать HTTP-запрос от браузера, чтобы получить домашнюю страницу, но использовать соединение WS, чтобы получать уведомления, когда у вас есть новое сообщение. Другой вариант реализации заключается в том, что браузер время от времени будет отправлять запросы, чтобы проверить, есть ли какие-либо новые сообщения, но он может загружаться на сервер (особенно при работе с несколькими пользователями), и это не очень в реальном времени (что, возможно, не имеет большого значения для сообщений Facebook, но может иметь решающее значение в системе управления и контроля).

Причина, по которой он может загружаться на сервер, заключается в том, что для установления HTTP-соединения требуется установить TCP-соединение (SYN, SYN / ACK, ACK), а затем отправить запрос GET с довольно большим заголовком.
При использовании открытого WS, с другой стороны, вы просто получаете ответ (без запроса), и он идет с гораздо меньшим заголовком.
Сохранение соединения открытым (WS) и установление нового соединения (HTTP) - это две затраты, которые должны быть учитывается при выборе между двумя протоколами.

В заключение:

Вся информация здесь была лишь верхушкой айсберга. Моей целью было сделать его коротким и легким, помочь вам войти в этот мир, и теперь вы можете продолжить обучение самостоятельно!

Пожалуйста, поделитесь своими мыслями: Подходит ли это для новичков? У вас остался вкус узнать больше? Теперь это не так страшно?

Вот способы связаться со мной:
LinkedIn: www.linkedin.com/in/ifat-neumann
Facebook: https://www.facebook.com/cupofcodebyifat/
Электронная почта: [email protected]

Дополнительные ресурсы:
https://www.youtube.com/watch?v=eesqK59rhGA
https://www.youtube.com/watch?v=FOZtRzY5x8E
https://www.tutorialsteacher.com/webapi/what-is-web-api
https://blog.teamtreehouse.com/an-introduction-to-websockets
https: //stackoverflow.com/questions/6224771/disadvantages-of-websockets