Shik-v-dom.ru

Шик в Дом
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как спроектировать правильный конечный автомат на REST

Как спроектировать правильный конечный автомат на REST

Как спроектировать правильный конечный автомат на REST главное изображение

Разработчики часто неверно понимают концепцию передачи состояния представления (REST). Большинство ошибок связаны с трактовкой архитектурного ограничения HATEOAS. В этой статье мы разберем популярные заблуждения, связанные с REST, и подробно остановимся на HATEOAS. В конце текста на примере имитации конечного автомата — кухонного тостера — рассмотрим, как гипермедиа может использоваться в REST API для управления состояниями.

Примечание: Это адаптированный перевод статьи Designing a True REST State Machine Билла Доррфельда, технического журналиста и специалиста по API. Повествование ведётся от лица автора оригинала.

Детерминированные конечные автоматы (deterministic finite automaton)

Простейший КА, в котором может быть одно состояние в текущий момент времени, обладает детерминированностью.

Детерминированность — для всех состояний имеется максимум и минимум одно правило для любого возможного входного символа, то есть например, для состояния 1 не может быть два перехода с одним и тем же входным символом.

image

Здесь изображена диаграмма переходов для ДКА, визуализация примера 1. Состояние 3 является заключающим. По диаграмме видно, что ДКА принимает цепочку символов только в том случае, если будет последовательность из символов ‘a’, ‘b’ и ‘c’.

Корутины

Корутины, как и генераторы, являются возобновляемыми функциями, но вместо генерации значений они принимают значения на лету. Работа с ним очень похожа на генератор, и опять-таки, в операторе yield происходит все волшебство. Когда корутина приостанавливается в операторе yield, мы можем отправить ее значение с помощью функции send, а значение можно использовать с помощью оператора присваивания = yield, как показано ниже.

В приведенном выше примере мы написали простую утилиту grep, которая проверяет подстроку в заданном потоке текста. Когда grep ставится на паузу в операторе yield, используя функцию send, мы отправляем ей текст, и после этого на него будет ссылаться переменная line. Затем корутина продолжает выполнение, чтобы проверить, находится ли substr в line или нет. Как только поток снова достигает оператора yield, корутина останавливается и ждет, пока вызывающая сторона отправит ей новое значение.

Читайте так же:
Подключение концевых выключателей задвижки

Обратите внимание, что это не поток, который продолжает работать и постоянно загружает процессор. Это просто функция, выполнение которой приостановлено в операторе yield, ее состояние сохраняется, а управление передается вызывающей стороне. После возобновления корутина начинается с того же состояния, в котором она остановилась.

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

В приведенных выше вызовах функций мы видим, как мы можем продолжать посылать текст в корутину, и она продолжает возвращать, если обнаружить заданную подстроку users/created в тексте. Эта способность корутин приостанавливать выполнение и принимать ввод на лету поможет нам смоделировать FSM очень интуитивно понятным способом.

ПОДВЕДЕМ ИТОГИ

— Сухой контакт – это прежде всего тип коммутационного устройства.

— Он или соединяет, или размыкает ВАШУ электрическую цепь, в которую вы его включили.

— На нём изначально нет потенциала, не подведет ток, его контакты не заземлены.

— Единственными важными параметрами сухого контакта должны являться максимальный ток, который можно пропустить через него, и информация о том, в каком состоянии находятся его контакты, как они работают ( обычно бывают нормально замкнутые, нормально разомкнутые или совмещенный тип – перекидные контакты).

Грамотно разработанная и собранная схема в электрощите, позволяющая в полной мере использовать преимущества сухого контакта – залог безопасности для каждого из нас.

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

голоса
Рейтинг статьи
Читайте так же:
Чертеж вакуумный выключатель вв tel
Ссылка на основную публикацию
Adblock
detector