C#からWebAssembly/WASIバイナリ生成可能に、.NET 8 SDKで実験的実装

2023年12月14日

マイクロソフトは、C#のコードからWASIに対応したWebAssemblyバイナリの生成を.NET 8 SDKで可能にする実験的実装「wasi-experimental」が追加されたと、ブログ「Extending WebAssembly to the Cloud with .NET」で明らかにしました。

WASI(WebAssembly System Interface)は、WebAssemblyバイナリをWebブラウザ上ではなくOS上のWebAssemblyランタイムで実行する際に、WebAssemblyからOSへのシステムコールを抽象化するための業界標準の仕様です。これにより、ファイスシステムの呼び出しなどOSの主要なシステムコールが抽象化されるため、WASIに対応したWebAssemblyバイナリはクロスプラットフォーム対応となります。

つまりwasi-experimentalによって、C#のコードからWindowsやmacOSやLinuxなどのさまざまOSおよびオンプレミスやクラウドなどの実行環境を問わない、さまざまな環境で実行可能なWebAssemblyバイナリが生成できることになります。

wasi-experimentalをインストール

具体的には.NET 8 SDKをインストールした後、wasi-experimentalをインストール。

dotnet workload install wasi-experimental

サンプルとして用意されている「wasi-console」テンプレートを試してみる。単純に「Hello, WASI Console!」を出力するコード。

$ dotnet new wasiconsole -o wasiconsole
$ cd wasiconsole
$ cat Program.cs 
using System;

Console.WriteLine("Hello, WASI Console!");

WebAssemblyランタイムのwasmtimeを用意しておき、dotnet runコマンドで追加情報を与えつつ実行。

$ dotnet run
WasmAppHost --runtime-config /Users/rich/wasiconsole/bin/Debug
  /net8.0/wasi-wasm/AppBundle/wasiconsole.runtimeconfig.json
Running: wasmtime run --dir . -- dotnet.wasm wasiconsole
Using working directory: /Users/rich/wasiconsole/bin/Debug
  /net8.0/wasi-wasm/AppBundle
Hello, WASI Console!

このようにWebAssembly/WASIバイナリとしてアプリケーションが実行されています。

.NET 8ではWebAssembly/WASIに対応した実験的実装ですが、来年(2024年)登場予定の.NET 9では、コンポーネントモデルなどを実現する「WASI Preview 2」に対応する見通しだと説明されています。

あわせて読みたい

.NET WebAssembly プログラミング言語 Microsoft




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本