Начало

Эта глава проводит компонент по пути от исходного кода до ответа на HTTP-запрос. Сначала подготовьте инструменты. Затем соберите компонент и запустите его локально. Платформа понадобится позже — когда компонент будет готов к публикации.

Путь компонента

Компонент проходит три шага.

Сборка. wash build собирает компонент из вашего кода и контракта WIT.

Публикация. Артефакт .wasm уходит в реестр OCI: тег выбирает версию, digest идентифицирует содержимое.

Исполнение. Среда wasmCloud запускает компонент там, где доступны нужные ему интерфейсы WASI.

Дальше работает один цикл. HTTP-запрос — событие или вызов API — приходит в среду. Компонент — ваш код и интерфейсы WASI — обрабатывает его. wasmCloud исполняет компонент и возвращает ответ.

Среда связывает компонент с нужными возможностями. Конфигурация, секреты и разрешения остаются на стороне среды: артефакт .wasm не хранит ни адресов, ни ключей.

Инструменты

Для локальной работы нужны wasmCloud Shell (wash) и тулчейн вашего языка.

Установка wasmCloud Shell

wash — интерфейс командной строки wasmCloud. Он создаёт проекты, собирает компоненты, публикует их в реестр и ведёт цикл разработки. wasmCloud Shell устанавливается официальной командой из документации wasmCloud:

curl -fsSL https://wasmcloud.com/sh | bash

Скрипт печатает следующие шаги: добавить каталог установки в PATH и проверить версию.

wash -V

Тулчейн языка

Компоненты собираются под WebAssembly. Для проекта на Rust добавьте целевую платформу wasm32-wasip2:

rustup target add wasm32-wasip2

Go и TypeScript собираются собственными тулчейнами — wash запускает их по команде из конфигурации проекта.

Проект

wash new создаёт проект из шаблона. Шаблон — Git-репозиторий с готовой структурой; команда принимает ссылку на репозиторий, ветку или тег и имя нового проекта. Шаблоны компонентов перечислены в документации wasmCloud.

В проекте три части:

  • wit/ — контракт компонента: интерфейсы и типы на языке WIT;
  • исходный код — функции, которые исполняет компонент;
  • конфигурация wash — команда сборки и путь к артефакту.

Конфигурация хранится в файле .wash/config.yaml проекта:

build:
  command: cargo build --target wasm32-wasip2 --release
  component_path: target/wasm32-wasip2/release/hello_world.wasm

Поле command — то, что запускает сборка; component_path — где лежит готовый артефакт.

Локальный цикл

Установите wash (см. выше), затем из корня проекта:

wash build

wash читает контракт, подтягивает WIT-зависимости в каталог wit/deps и запускает команду сборки из конфигурации. Результат — артефакт .wasm: двоичный компонент, соответствующий модели компонентов WebAssembly.

Для разработки запустите сервер:

wash dev

wash dev запускает сервер разработки и исполняет компонент на нём; адрес печатается при старте — проверьте ответ любым HTTP-клиентом. После правок исходников цикл перезапускают: сборка не следит за файлами автоматически. Остановите сервер сочетанием Ctrl+C.

Обе команды работают из любого каталога внутри проекта. Извне проекта укажите путь флагом -C:

wash -C ~/projects/hello build

Артефакты и версии инструментов

Отладочная сборка пишется в target/wasm32-wasip2/debug/, релизная — в target/wasm32-wasip2/release/. Какой файл считать артефактом, решает component_path из конфигурации.

wash обновляется одной командой:

wash update

Проверяйте версию после обновления — контракт и инструменты живут в одной экосистеме, и совпадение версий экономит время отладки.

От запроса к ответу

Компонент отвечает на HTTP-запросы, когда контракт экспортирует интерфейс wasi:http/handler. Среда передаёт запрос компоненту. Компонент возвращает ответ — статус, заголовки и тело.

Запрос приносит метод, путь, заголовки и тело. Ответ собирается из статуса, заголовков и тела — тех же частей, что вы знаете по любому HTTP-сервису. Никакого платформенного API между вами и запросом нет: контракт объявляет стандартный интерфейс, среда его исполняет.

Так рождается функция: один артефакт, один контракт, одна ответственность. Дальше артефакт можно публиковать — реестр и среды исполнения описаны в главе «Платформа».

Что дальше

  • «Платформа» — реестр компонентов, среды исполнения и GraphQL.
  • «WebAssembly и WASI» — модуль, компонент, контракт WIT и разрешения.
  • «Kubernetes» — запуск рабочей нагрузки в кластере.

Команды этой главы сверены с официальной документацией wasmCloud: установка, справочник команд wash, руководство разработчика.