DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk5 min

[Event Sourcing] Running an Existing C# Business Model on Wasm with SekibanWasmRuntime

Reuse an existing C# Sekiban DCB model with SekibanWasmRuntime: command handlers stay in the API, while projector and list-query work runs in Wasm. Setup steps, preview versions and license limits.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Partly. In the September 14, 2026 walkthrough, an existing Sekiban DCB business model is reused: its domain code is referenced by a separate WebAssembly project, and the projector and list-query work runs inside SekibanWasmRuntime. The command handlers stay in the API process, so the API still receives requests, runs the existing handler, and produces the event. The walkthrough does not claim a zero-change migration, and it describes a preview-era package set, so treat it as an integration pattern rather than a production-ready recipe.

Where the boundary sits

The most useful way to read the example is to ask, for each piece of the application, where it executes. The walkthrough uses a C# student, class and course-registration application. Only part of it moves.

As an Amazon Associate I earn from qualifying purchases.

Component Where it runs in the walkthrough What it does there
Command handler API process (unchanged) Receives the registration request, applies the business rules, and creates the event. Existing endpoints keep calling ExecuteAsync(command).
Business/domain code Referenced by a separate Wasm project Supplies the model types and rules that the Wasm side needs.
Projector Wasm-hosted, inside SekibanWasmRuntime Builds state from events.
List queries Wasm-hosted, inside SekibanWasmRuntime Serves list-query work.
Event storage PostgreSQL, used by the runtime container Persists events; the example uses a dedicated database defined in AppHost.

Read the table as a boundary, not a migration. Nothing in the example moves the whole Web API into Wasm, and command handlers are not executed by the runtime.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The request path, step by step

  1. A client sends a course-registration request to the API.
  2. The existing command handler runs and applies the business rules, creating an event.
  3. The API passes the event to the runtime through RemoteSekibanExecutor, which is registered as ISekibanExecutor.
  4. The runtime stores the event in PostgreSQL.
  5. The Wasm-hosted projector updates state, and list queries are answered from that state.

What you add to an existing project

The author summarizes the change in one sentence: “The business code remains the same, but we add the entry point for calling Wasm, type registration, and API connection settings.” The walkthrough breaks that work into six items.

A Wasm project that references your business code

The existing business code stays where it is and is referenced by a separate Wasm project. That project is the build target for the runtime module, so it must compile on its own before AppHost starts.

An entry point and type registration

The Wasm project needs an entry point that the runtime can call, and the types it uses must be registered so the runtime can resolve them. The API side needs its own connection settings for the runtime.

A manifest that maps the module

The manifest maps the module to its events, projectors and queries. It is the document that tells the runtime which code handles which part of the event stream.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A Docker-based build script

A project build script publishes the Wasm project for the wasi-wasm target inside Docker, then validates the generated module with wasm-tools. Docker is therefore a build prerequisite in this setup, not only a runtime convenience.

AppHost wiring for the runtime and database

AppHost gets configuration for the runtime container and a dedicated PostgreSQL database. The runtime depends on that database for event persistence.

Remote executor registration in the API

The API registers RemoteSekibanExecutor as ISekibanExecutor. Existing endpoints can keep calling ExecuteAsync(command), which is why the command side needs little visible change.

Versions used in the example

The walkthrough records the following versions, dated September 14, 2026. They describe that example only and are not current compatibility advice. Package versions and the container version belong to separate version series.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Component Version in the walkthrough Version series
.NET 10 (SDK) .NET 10 line
Sekiban.Dcb 10.19.0 Sekiban DCB package
Sekiban.Dcb.WasmRuntime.Aspire 1.0.0-preview.6 WasmRuntime package preview
Sekiban.Dcb.WasmRuntime.Remote 1.0.0-preview.6 WasmRuntime package preview
Runtime container 1.0.0-preview.3 Container preview, numbered separately from the packages

Building and launching locally

The walkthrough’s local launch follows this sequence. Each step depends on the one before it.

  1. Install the .NET 10 SDK and Docker Desktop.
  2. Run the project’s build script. It publishes the Wasm project for wasi-wasm inside Docker.
  3. Confirm the generated module passes validation with wasm-tools. A failed validation means the module should not be used by AppHost.
  4. Build the dedicated Wasm project before starting AppHost. AppHost expects the module to exist.
  5. Start AppHost. It uses Aspire environment variables to launch PostgreSQL, the runtime container and the API.

In the walkthrough, the generated module was 25,282,599 bytes. That figure is one build’s output, and the author notes that size changes as the code changes. Do not read it as a benchmark or a size target.

The preview workaround: SEKIBAN_WASM_POOL_SIZE=0

The walkthrough sets SEKIBAN_WASM_POOL_SIZE=0 to avoid a wait issue that appears with consecutive list updates in that preview version. The author states that this value is not a production-recommended setting and had not been evaluated for production use. Treat it as a local workaround tied to that release. Do not carry it into a deployment, and do not use it as a general tuning value.

Package roles and language support

J-Tech Japan’s July 6, 2026 announcement describes SekibanWasmRuntime as a Wasm event-sourcing and CQRS runtime. At announcement time it named C# and Rust as the prepared language packages. The CTO’s July 2, 2026 walkthrough describes the runtime host as C# on Orleans, and it separates the C# packages by role.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Package role (as described by the CTO) Where it sits Used in the example?
Shared contract Referenced on both sides for types they share Yes, through the Wasm project and the API
Remote HTTP client API side, calling the runtime over HTTP Yes, as RemoteSekibanExecutor
In-process Wasmtime host Inside a .NET process that runs the Wasm module directly Not in the walkthrough’s path, which uses the runtime container

The walkthrough’s path uses the public runtime container, which connects to PostgreSQL for event persistence. Other language packages named at announcement time are not covered by this example.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Licensing and hosting boundary

The license decides what you can do with the runtime, and it is separate from the technical setup.

  • The July 6, 2026 announcement states that the source is public under the Elastic License 2.0.
  • The CTO’s July 2, 2026 walkthrough states that self-hosting and internal use are allowed.
  • A third-party hosted or managed service that provides the runtime’s main capabilities requires a separate commercial license.
  • Read the license text for your specific deployment. The announcement’s summary is not a substitute.

Is your model on DCB?

The current Sekiban repository recommends DCB for new projects and places Sekiban.Pure and Sekiban.Core in maintenance mode. If your existing model is built on Pure or Core rather than DCB, this walkthrough does not describe your starting point directly.

What the evidence does not establish

  • Production readiness. The walkthrough is preview-era and the author says the pool-size workaround was not evaluated for production.
  • Performance. No latency, throughput or cost measurement is published for this walkthrough, and no comparison with running the handlers in the API alone is available.
  • Security. The company describes Wasm as the boundary for executing uploaded domain code: “Wasmを「アップロードされたドメインコードを安全に実行するための境界」として採用しました。” That is the company’s design rationale, not independent security validation.
  • Availability and hardening. Nothing in the reviewed material covers high availability or deployment hardening.
  • Adoption. No independent adoption figures were found.
  • Compatibility. The version table reflects one dated example. Check current package and container releases before you start.

Until those questions are answered by separate validation, plan the integration as a preview experiment inside a bounded project.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.