Repolode
zion-sati

zion-sati/NetWasm

자체 CoreLib, 런타임 및 SDK를 갖춘 C# 및 .NET CIL-to-WebAssembly 컴파일러로, 소형 독립 실행형 WASI Preview 2 컴포넌트를 생성합니다.

스타
233
포크
7
열린 이슈
6
마지막 커밋
2시간 전

어떤 프로젝트인가요?

NetWasm은 데스크톱 CLR, Mono 또는 애플리케이션 DLL을 함께 배포하는 대신 자체 컴파일러, CoreLib, 런타임 및 SDK를 사용해 C#과 .NET CIL을 WebAssembly로 직접 컴파일합니다. 컴파일러는 프로그램에서 도달 가능한 코드만 대상으로 필요한 런타임 지원만 링크하므로, 결과물은 Wasmtime 같은 Wasm 호스트에서 실행되는 독립형 WASI Preview 2 컴포넌트입니다. 빌드에는 일반적인 dotnet CLI를 사용합니다.

이 프로젝트는 서버리스 함수나 브라우저 모듈처럼 크기가 작고 샌드박스에서 실행되는 C# 바이너리를 원하는 개발자를 대상으로 합니다. 세 가지 가비지 컬렉터 전략(기본값인 Compact, NetWasmGC, Bump)을 제공하고, C# 내보내기 함수를 Web Worker에서도 실행할 수 있는 타입이 지정된 JavaScript 모듈로 게시하며, WIT에서 C# 바인딩을 생성합니다. 지원 범위는 .NET의 일부로 한정됩니다. 런타임 리플렉션, dynamic, 런타임 어셈블리 로딩, 관리 스레딩은 포함되지 않으며, 프로젝트는 아직 1.0 이전 버전입니다.

핵심 기능

  • 01C#과 .NET CIL을 독립 실행형 WASI Preview 2 컴포넌트로 직접 컴파일합니다.
  • 02도달 가능한 코드와 필요한 런타임 지원만 링크해 바이너리 크기를 줄입니다.
  • 03Compact, NetWasmGC, Bump 가비지 컬렉터 전략을 제공합니다.
  • 04Web Worker에서 사용하는 경우를 포함해 C# 내보내기 함수를 타입이 지정된 JavaScript 모듈로 게시합니다.
  • 05WIT에서 C# 바인딩을 생성하고 정적 .a 네이티브 상호 운용을 지원합니다.
  • 06표준 dotnet CLI로 빌드하고 테스트합니다.

활용 사례

  • 작은 C# 함수를 WebAssembly 호스트나 서버리스 런타임에 배포합니다.
  • 타입이 지정된 JavaScript 모듈로 브라우저 페이지나 Web Worker에서 C# 로직을 실행합니다.
  • NetWasm과 데스크톱 .NET을 모두 대상으로 하는 이식성 높은 C# 라이브러리를 빌드합니다.
  • 더 큰 Blazor WebAssembly 빌드 대신 간결한 Wasm 대안으로 C#을 평가합니다.

빠른 시작

  1. 1

    .NET SDK 10.0.303 이상을 설치합니다

  2. 2

    NetWasm 프로젝트 템플릿을 설치합니다

    dotnet new install NetWasm.Templates
  3. 3

    새 NetWasm 앱을 만들고 실행합니다

    dotnet new netwasm-app -n HelloNetWasm
  4. 4

    앱을 독립 실행형 WASI 컴포넌트로 게시합니다

    dotnet publish -c Release -o publish/local

사용 전 알아둘 점

  • NetWasm은 아직 1.0 이전 버전이므로 소스, 패키지 및 ABI 계약이 마이너 릴리스 간에 변경될 수 있습니다.
  • 런타임 리플렉션, dynamic, 런타임 어셈블리 로드 및 관리형 스레딩은 지원되지 않습니다.
  • 일반 파일, 디렉터리, 소켓 및 하위 프로세스 API는 아직 구현되지 않았습니다.
  • 게시된 컴포넌트를 실행하려면 Wasmtime과 같은 WebAssembly 호스트가 필요합니다.

토픽

자주 묻는 질문

NetWasm은(는) 무엇인가요?
자체 CoreLib, 런타임 및 SDK를 갖춘 C# 및 .NET CIL-to-WebAssembly 컴파일러로, 소형 독립 실행형 WASI Preview 2 컴포넌트를 생성합니다. NetWasm은 데스크톱 CLR, Mono 또는 애플리케이션 DLL을 함께 배포하는 대신 자체 컴파일러, CoreLib, 런타임 및 SDK를 사용해 C#과 .NET CIL을 WebAssembly로 직접 컴파일합니다. 컴파일러는 프로그램에서 도달 가능한 코드만 대상으로 필요한 런타임 지원만 링크하므로, 결과물은 Wasmtime 같은 Wasm 호스트에서 실행되는 독립형 WASI Preview 2 컴포넌트입니다. 빌드에는 일반적인 dotnet CLI를 사용합니다.
NetWasm은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
NetWasm은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
NetWasm은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. NetWasm의 마지막 커밋은 2026년 10월 22일입니다.
NetWasm은(는) 어디에 사용할 수 있나요?
작은 C# 함수를 WebAssembly 호스트나 서버리스 런타임에 배포합니다. 타입이 지정된 JavaScript 모듈로 브라우저 페이지나 Web Worker에서 C# 로직을 실행합니다. NetWasm과 데스크톱 .NET을 모두 대상으로 하는 이식성 높은 C# 라이브러리를 빌드합니다. 더 큰 Blazor WebAssembly 빌드 대신 간결한 Wasm 대안으로 C#을 평가합니다.
NetWasm는 어떻게 설치하나요?
.NET SDK 10.0.303 이상을 설치합니다 NetWasm 프로젝트 템플릿을 설치합니다: dotnet new install NetWasm.Templates 새 NetWasm 앱을 만들고 실행합니다: dotnet new netwasm-app -n HelloNetWasm 앱을 독립 실행형 WASI 컴포넌트로 게시합니다: dotnet publish -c Release -o publish/local
NetWasm은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/zion-sati/NetWasm

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트