К содержанию

Навигация

Порты и наборы проверок

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

Объявление порта

Порт — отдельный файл port.json в контрактах Core. Каждая версия порта лежит в своей папке вместе с набором проверок: в исходниках Framework — в src/core/contracts/ports/<порт>/<версия>/, в поставке ui — в distr/core/contracts/ports/<порт>/<версия>/. Порты и наборы проверок входят во Framework, в том числе порты, через которые работают компоненты продуктов. Файл порта содержит:

  • возможности — необязательные части порта, которые хост может дать или не дать конкретному экземпляру;
  • данные — что компонент принимает, закрытыми схемами;
  • намерения — что компонент просит, с перечнем возможных ответов хоста: применено, конфликт с текущей ревизией, отказано с причиной, недоступно;
  • настройки — какие слои хранятся;
  • набор проверок (conformance) — ссылку на набор, его хеш и число случаев;
  • совместимость — с какими версиями порта эта версия совместима.

Форма объявления задана отдельной схемой — схемой порта (формат simai.composite.host-port). Рядом с port.json лежит набор проверок: его опись kit/manifest.json и случаи в kit/cases/. Например, текущая версия порта представления данных — distr/core/contracts/ports/simai.dataview-port/1.12.0/port.json и distr/core/contracts/ports/simai.dataview-port/1.12.0/kit/manifest.json.

Набор проверок

Набор проверок (conformance kit) — образцы данных, намерения, которые поднимает компонент, и ожидаемые ответы хоста, включая конфликт, отказ и запрет.

Набор не зависит от транспорта: он описывает данные и ответы, а не адреса и форматы передачи. Поэтому его может пройти хост на любом языке — PHP-приложение, Node-сервер, тестовая заглушка.

Правила для приложения:

  • обязательно: заявлять поддержку версии порта только после прохождения набора этой версии;
  • обязательно: записывать версию набора, свою ревизию и результат прохождения.

Эталонный хост

Эталонный хост — небольшая реализация хоста в тестах компонента, на которой владелец компонента — Framework или продукт — сам проходит набор проверок. Так поломка стыка обнаруживается у владельца, а не у продукта. Случай, который эталонный хост не проходит, не требуется и от продукта.

Кроме того, гейт владельца компонента сверяет:

  • объявление порта — со схемой порта;
  • байты порта — с тем, что закреплено в манифесте;
  • каждое намерение — с событием, которое объявляет компонент;
  • хеш набора — с самим набором.

Какие порты есть

Изданы порт представления данных (simai.dataview-port), порт представления свойств (simai.property-view-port) и порт навигации администратора (simai.admin-navigation-port). Через них работают составные Smart-компоненты продуктов (см. Пакеты компонентов продуктов), а сами порты и наборы проверок входят во Framework, поэтому приложение может реализовать и проверить хост по открытому контракту. У каждой версии порта свой набор проверок. Текущие версии портов — в карте стандартов (см. Уровни стандартов); все изданные версии лежат в поставке ui: distr/core/contracts/ports/<порт>/<версия>/.

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

Смотрите также

Поиск по документации

Введите минимум 2 символа

    Настройки

    Тема
    Размер шрифта
    Ширина страницы