Что такое Elixir Plug?

Как новичок как в Elixir, так и в веб-области в целом (без опыта работы с веб-фреймворками), я хотел бы знать, что такое Plug? Насколько я понимаю, Cowboy - это веб-сервер (хотя и на Erlang, а не на Elixir), а Phoenix - это фреймворк для создания веб-приложений, но где тут Plug? Это уровень абстракции между ними или, возможно, система плагинов на том же уровне абстракции, что и Phoenix?


person stoft    schedule 10.10.2014    source источник


Ответы (3)


Это слой абстракции между двумя

Да, точно! Plug предназначен для использования в качестве универсального адаптера для различных веб-серверов. В настоящее время мы поддерживаем только Cowboy, но есть работа, чтобы поддержать других.

Plug также определяет, как разные компоненты должны быть подключены друг к другу. Подобно Rack в Ruby, WSGI в Python, Ring в Clojure и т. Д.

person José Valim    schedule 12.10.2014
comment
В порядке. Насколько я могу судить, WSGI - это спецификация интерфейса. Является ли Plug таким же, или это фактический программный компонент, который находится между, например, Феникс и Ковбой? А как заглушки взаимодействуют, сложены ли они стопкой? - person stoft; 14.10.2014
comment
Штекер - это оба. Это компонент, который находится между ними, и он также определяет спецификацию. Вилки не штабелируются, это больше похоже на трубопровод, где вилка передает соединение следующей вилке. - person José Valim; 14.10.2014

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

person Ben Hodge    schedule 04.05.2019

На самом деле я написал небольшое подробное описание Plug and Cowboy и того, как они работают под капотом, которое вы можете прочитать здесь, но основное резюме будет следующим:

Cowboy - это фактический веб-сервер, который анализирует и обрабатывает любые входящие и исходящие запросы, написанные на Erlang. Cowboy работает в тандеме с Ranch, который обрабатывает входящие соединения сокетов и управляет протоколом TCP.

Plug - это не более чем спецификация, помогающая создавать конечные точки в Интернете. Он дает вам инструменты для обработки HTTP-запросов, установки кода состояния, отправки ответов и т. Д.

Способ, который помогает мне рассуждать обо всей этой системе, - это думать о Plug and Cowboy как о главном канале Phoenix.

person Tiago Botelho    schedule 10.03.2021