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 컴포넌트 모델은 여러 측면에서 코어 WebAssembly를 확장합니다. 컴포넌트 모델은 다음과 같은 역할을 합니다.

  • 상위 수준 타입의 일관된 표현을 추가합니다
  • 인터페이스 주도 개발을 가능하게 합니다
  • 코어 WebAssembly를 합성 가능하게 만듭니다. 기능을 제공하는 컴포넌트와 그 기능을 사용하는 컴포넌트를 함께 합성하여 하나의 결과 컴포넌트로 만들 수 있습니다.

이 섹션에서는 컴포넌트 모델의 핵심 개념을 소개합니다. 컴포넌트 모델의 설계 근거는 이전 섹션을 참조하십시오.

컴포넌트

WebAssembly 컴포넌트는 정규 ABI를 준수하는 바이너리이며, 대개 컴포넌트 모델의 기능(상위 수준 타입, 인터페이스)으로 확장된 WebAssembly 코어 모듈입니다. WebAssembly 컴포넌트는 중첩 가능합니다. 즉, 0개 이상의 코어 모듈 및/또는 하위 컴포넌트를 함께 합성하여 포함할 수 있습니다. 예를 들어, 간단한 계산기를 구현하는 컴포넌트는 문자열을 부동소수점 수로 파싱하는 컴포넌트와 주요 산술 연산을 수행하는 컴포넌트를 합성하여 작성할 수 있습니다.

WebAssembly 인터페이스 타입(WIT)

WebAssembly 인터페이스 타입(WIT)은 WebAssembly 컴포넌트의 기능을 형식적으로 정의하는 데 사용되는 인터페이스 정의 언어(IDL)입니다. WIT는 WebAssembly 컴포넌트가 언어에 구애받지 않는 방식으로 타입 시그니처를 표현할 수 있게 해 주므로, 모든 컴포넌트 바이너리를 검사하고 합성하고 실행할 수 있습니다.

인터페이스

인터페이스는 타입 정의와 함수 선언(타입 시그니처가 함께 주어진 함수 이름)의 모음입니다. 일반적으로 하나의 인터페이스는 특정하고 한정된 기능 일부를 기술합니다.

예를 들어 wasi-cli에서는 stdin, stdout, stderr(일반적으로 명령줄과 유사한 환경에서 사용할 수 있는 스트림)를 구현하기 위해 세 개의 별도 인터페이스를 사용합니다

월드

월드는 컴포넌트가 제공하는 기능과 컴포넌트가 의존하는 기능을 표현하는 인터페이스와 타입의 모음입니다.

예를 들어 wasi-cli에는 command 월드가 포함되어 있으며, 이 월드는 무엇보다도 stdin, stdout, stderr 스트림을 나타내는 인터페이스에 의존합니다. command 월드를 구현하는 컴포넌트는 해당 인터페이스를 구현하는 환경에서 호출되어야 합니다.

패키지

패키지는 서로 관련된 인터페이스와 월드를 포함하는 WIT 파일의 집합입니다.

예를 들어 wasi-http 패키지에는 HTTP 프록시가 의존하는 인터페이스를 캡슐화하는 imports 월드와 imports에 의존하는 proxy 월드가 포함되어 있습니다.

비동기, 스트림, 퓨처

async func, stream<T>, future<T>를 사용할 수 있게 하는 새로운 컴포넌트 모델 기본 요소가 WASI 0.3과 함께 도입되었습니다. 이들을 함께 사용하면 인터페이스가 컴포넌트 경계를 넘어 합성되는 비동기 작업을 표현할 수 있습니다.

플랫폼

WebAssembly의 맥락에서 호스트는 WebAssembly 바이너리를 실행할 수 있는 WebAssembly 런타임을 의미합니다. 런타임은 브라우저 내부에 있을 수도 있고 독립적으로 존재할 수도 있습니다. 게스트는 호스트가 실행하는 WebAssembly 바이너리를 의미합니다. (이 용어들은 가상화에서 대응되는 개념을 빌려온 것으로, 가상화에서 게스트는 물리 하드웨어, 즉 “호스트” 위에서 실행되는 소프트웨어 기반 가상 머신입니다)

컴포넌트 모델은 코어 WebAssembly에 플랫폼이라는 개념을 도입하여, WebAssembly 게스트가 호스트 기능을 구조화되고 표준화된 방식으로 사용할 수 있게 합니다. 컴포넌트는 자신이 실행되는 플랫폼이 제공하는 기능을 임포트할 수 있습니다.

WASI

WebAssembly 시스템 인터페이스(WASI)는 일반적인 시스템 수준 함수를 위한 인터페이스 모음을 WIT로 정의합니다. WASI는 개발자에게 익숙한 기존 프로그램(예: wasi-cli 또는 wasi-http)을 모방하는 플랫폼을 컴포넌트 작성자를 위해 정의하여, 컴포넌트가 의존하는 기능을 표준화합니다.

Note

컴포넌트 모델은 Bytecode Alliance가 관리하며 공개적으로 설계됩니다.

목표, 사용 사례, 상위 수준 설계 선택에 대해서는 WebAssembly/component-model 저장소를 참조하십시오.


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