TGViewer
Unity Architect: архитектура unity проектов Unity Architect: архитектура unity проектов @uniarchitect · 5.23K subscribers
Post #123 4.64K
ПОРТЫ И АДАПТЕРЫ

Любая программа состоит из 3ех фундаментальных частей:
— Ввод
— Обработка
— Вывод

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

И идея его проистекает из способа работы с железом:
🔹 У нас есть спецификация платы, чипа
🔹 У каждого чипа, платы есть порты
🔹 Каждый порт соответствует пину, ножке чипа
🔹 Проставив значение hot (1) на один из пинов/ножек, мы просим чип выполнять какие-либо операции
🔹 Вывод этих операций мы можем "слушать" с другого порта согласно спецификации

Так мы можем складывать числа, включать/выключать диод на плате, загружать операционную систему.
Для наглядности можно посмотреть это видео с канала Low Level Learning.

И любая работа с железом всегда строилась таким образом:
🔸 Ты пишешь по магическому адресу магическое число (ввод)
🔸 Получаешь по магическому адресу магический ответ (вывод)
Дааа, embedded программирование — чистая магия, не иначе 🤣

А теперь абстрагируемся:
🔹 Любой способ получить данные — ввод
🔹 Любой способ вывести/сохранить данные — вывод
🔹 Преобразование ввода в вывод — сама суть любой программы 🫡

Но мы ведь не работаем с чистыми битами и регистрами, мы просто пишем File.Read, WebRequest.Process и получаем данные в удобном формате.
А раньше работали и каждый по своему мог организовывать ввод и вывод.
Именно из-за особенности связи код-железо и появился архитектурный подход "Порты и Адаптеры".

Суть:
🔸 Порт — это любая абстрактная сущность, которая предоставляет данные.
Мы ее "слушаем" и получаем/отправляем данные
🔸 Адаптер — конвертер/преобразователь в формат представления структур/объектов языка.

Т.е. это простейшее разбиение на 2 операции:
🔹 Отправка/получение данных
🔹 Десериализация (а по факту демаршалинг) данных

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

🔻Это позволяет нам в целом абстрагироваться от способа получения данных и реализовать поддержку бесконечного кол-ва источников.
В том числе мы можем сделать fake источник, тем самым делая возможным тестирование логики.

Этот подход позже был экстраполирован на крупные системы и был переименован в Hexagonal architecture.
Где каждая грань многогранника обозначала свою связку порта и адаптера.

Ремарка:
Название "Порты и Адаптеры (Ports and Adapters)" это второе название Hexagonal Architecture, которая решает проблемы совсем другого уровня.
У меня же в статье "Порты и Адаптеры" никак не связаны с Hexagonal Architecture. Я рассматриваю этот подход отдельно и независимо.
Я позволяю себе такое, потому что следы "Портов и Адаптеров" можно найти задолго до Hexagonal Architecture, например в документации к Apple Macintosh 1992 года 👍


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

Вот пример адаптера
с проекта Magic Battle Arena.
Реализацией порта в этом случае был класс TcpServer.

Сохраняй себе, чтобы не потерять и делись с коллегами 📞
Ставь 👍 если тебе заходит такого рода контент!

#архитектурные_подходы@UniArchitect
  • 👍 25
  • 🔥 3
More from @uniarchitect
  1. Jul 24, 2026Post #199
  2. Jul 12, 2026AI НЕ ДЕЛАЕТ ВАС ПРОДУКТИВНЕЕ Незыблемый факт: AI уже очень хорош в маленьких задачах. Нап…
  3. Jul 9, 2026Post #196
  4. Jul 7, 2026UNITY BUILD PIPELINE ПО КИРПИЧИКАМ Полгода назад я решил попробовать активность в блоге, г…
  5. Jul 4, 2026ПРОКЛЯТИЕ ПЕРЕИСПОЛЬЗУЕМОСТИ Делюсь болью. Я последние 5 лет на разных уровнях у разработч…
  6. Jun 29, 2026AI КАК РЕДАКТОР, А НЕ АВТОР Это вторая статья из серии про AI. Первая тут. Когда я запуска…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →