Port — центральное понятие Hexagonal Architecture.

Определение: интерфейс, объявленный внутри core (application или domain), реализуемый снаружи (infrastructure).

Ключевое свойство: Port принадлежит потребителю. Use case говорит «мне нужно уметь сохранить Order», Port OrderRepositoryPort — часть контракта use case. Infrastructure реализует. Это инверсия зависимостей на уровне архитектуры.

В Python — идиоматичное определение через Protocol (PEP 544):

class OrderRepositoryPort(Protocol):
    async def find_by_id(self, order_id: OrderId) -> Order | None: ...
    async def save(self, order: Order) -> None: ...

Реализация (PostgresOrderRepository) не обязана декларировать зависимость — structural subtyping удовлетворяет Port автоматически.

Синонимы

Порт

Не путать с

← ко всему глоссарию