Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

실행 가능한 컴포넌트 만들기

이 섹션에는 실행 가능한 컴포넌트를 만드는 방법에 대한 언어별 가이드가 포함되어 있습니다.

리액터(라이브러리와 유사한) 컴포넌트에서 임의의 함수 실행하기

실제로 WebAssembly 컴포넌트에서 내보낸 모든 인터페이스는 다음 방법 중 하나로 실행할 수 있습니다:

  • 기능을 임포트하고 재사용하는 사용자 정의 호스트/컴포넌트 만들기
  • wasmtime run --invoke와 같은 고수준의 범용 도구 사용하기

예를 들어, 다음 WIT를 충족하는 WebAssembly 컴포넌트가 있다고 가정합니다:

package docs:adder@0.1.0;

interface add {
    add: func(x: u32, y: u32) -> u32;
}

world adder {
    export add;
}

add 인터페이스 내부에서 익스포트된 add 함수를 사용하려면 해당 기능을 임포트하고 사용하도록 빌드된 호스트나 다른 컴포넌트를 작성해야 합니다. 그 예시는 이 저장소에 있는 example-host에서 확인할 수 있습니다.

또는 wasmtime run --invoke처럼 컴포넌트에 대해 범용적으로 동작하는 도구를 사용할 수 있습니다:

wasmtime run --invoke 'add(1, 2)' add.component.wasm

Wasmtime에는 익스포트를 범용적으로 해석하고, 인수를 WebAssembly 인수로 변환하며, 기존 컴포넌트를 동적으로 실행할 수 있는 코드가 포함되어 있습니다.

바이너리처럼 동작하는 컴포넌트 만들기

임의의 함수를 실행하려면 사용자 정의 호스트/플랫폼이나 wasmtime run --invoke와 같은 동적 도구가 필요하지만, 바이너리처럼 취급할 수 있는 컴포넌트(즉, CLI 애플리케이션)도 빌드할 수 있습니다.

개괄적으로 보면, 라이브러리보다는 바이너리에 가까운(즉, wasmtime run과 같은 도구로 쉽게 실행할 수 있는) 컴포넌트를 만드는 방법은 최소 두 가지가 있습니다:

  1. “command” 컴포넌트 만들기
  2. wasi:cli/run 인터페이스 내보내기

command 컴포넌트는 단순히 _start 익스포트를 가지는 반면, wasi:cli/run run 인터페이스를 내보내는 컴포넌트는 WASI를 통해 stdout, stderr와 같은 CLI 환경을 모방하는, 더 견고하고 표준화된 인터페이스를 활용할 수 있습니다.

이 섹션에서는 관련 언어에서 (바이너리처럼) 간단하게 실행할 수 있는 컴포넌트를 만드는 방법을 살펴봅니다.

언어

이 가이드는 다양한 언어에 대해 구현되어 있습니다:


원문 © 2023 The Bytecode Alliance Contributors · WebAssembly Components Documentation · CC BY 4.0
Yeokja 한국어 번역·편집 · Anthropic 사의 claude-sonnet-5 모델을 활용하여 번역되었으며 학습을 모두 비허용한 상태로 작업하였습니다 · 이 번역은 원문을 수정한 문서이며 CC BY 4.0으로 제공합니다.