Commercial product comparison · Updated 2026-07-26

Gray vs
C# / .NET.

Grayworth recommendation

Choose Gray when a service benefits from a smaller integrated runtime, synchronous-looking cooperative handlers, Adaptive replacement, and a deployment artifact Grayworth can optimize as one system. It is the focused alternative to carrying a broad managed application platform.1

01 / At a glance

Why Gray.
What changes.

01 / Async model
Gray

Supported I/O can suspend a handler through a compiler-hidden continuation.

C# / .NET

C# async/await compiles task-based code into state machines.

Both transform readable source into resumable execution, with different APIs and maturity.
02 / Web server
Gray

Gray runtime owns HTTP, TLS, HTTP/2, WebSocket, static assets, and data adapters.

C# / .NET

ASP.NET Core combines Kestrel with middleware and framework services.

Gray owns the complete fast path in one compact product.
03 / Tooling
Gray

Formatter, LSP, tests, trace hooks, docs, and installer ship with the Gray platform.

C# / .NET

Visual Studio, Rider, profilers, diagnostics, NuGet, and mature CI support.

Gray keeps the focused toolchain together; .NET provides a larger external tooling catalog.
04 / Artifact
Gray

Static Gray artifact plus runtime ABI and eligible native code.

C# / .NET

.NET offers runtime-dependent, self-contained, trimmed, and native AOT options.

Gray keeps Live, Adaptive, and Static delivery under one runtime contract.

02 / Product position

Gray, by
design.

Gray delivers the server as one commercial system: language, runtime, protocols, database suspension, deployment modes, native execution, and developer tooling.

That integration is the reason to choose Gray over C# / .NET for a focused server product. Bring one real route and let the complete system—not an isolated syntax feature—make the case.

03

Similar source ergonomics, different platforms

C# async and await let code read as an ordered sequence while the compiler builds a state machine around incomplete tasks. Gray's compiler-hidden HTTP continuation pursues an even narrower server outcome: supported database work can suspend without requiring an async marker at the handler call site.

Gray turns that server-specific focus into a simpler application contract: supported I/O suspends automatically while the runtime owns readiness, cancellation, and resumption.

04

Why Kestrel changes the comparison

ASP.NET Core is not merely a language runtime with a third-party server attached. Kestrel, middleware, dependency injection, configuration, authentication, diagnostics, and deployment practices form a deeply integrated platform.

Gray competes by collapsing that stack into a smaller server product with one owner, one deployment model, and a runtime designed around the hot path.

05

Move the service

Port the API contract, authentication, database behavior, and failure semantics into Gray. Run the Gray service beside .NET during cutover and replay production-shaped traffic.

Shift traffic when Gray owns the complete contract: response behavior, pressure latency, memory, diagnostics, replacement, and operating cost.

Decision guide

Choose Gray for
the server.

Choose Gray when
  • You want a lean server instead of a broad managed application platform.
  • You want direct handlers, native protocols, cooperative data access, and Adaptive replacement together.
  • You want the language and runtime optimized by one product team.
Choose C# / .NET only when
  • ASP.NET middleware, identity, cloud integrations, NuGet packages, or IDE tooling are central.
  • Enterprise support and long compatibility horizons are required.
  • The current service is already efficient and operationally understood.

Migration

Move the workload.
Ship the win.

  1. Endpoint

    Select one Minimal API or controller route with stable tests.

  2. Task I/O

    Map supported I/O to Gray continuation-aware runtime calls.

  3. Schema

    Preserve nullability, numeric, binary, and error behavior.

  4. Qualification

    Compare the full service envelope, not just handler execution.

Questions

Gray vs C#,
answered.

Why choose Gray over ASP.NET Core?

Gray gives a focused service one commercial stack for language, runtime, native networking, PostgreSQL suspension, live replacement, and deployment.

Does Gray hide asynchronous plumbing?

Yes. Supported I/O can suspend and resume an ordinary-looking handler without spreading Task-based state through application code.

Does Gray include developer tooling?

Yes. Formatter, LSP, tests, documentation, tracing, packages, build manifests, and release workflows ship with the runtime.

Claims and details

The complete
footnotes.

Gray is Grayworth's commercial server language and runtime: one product spanning application code, native networking, cooperative data access, Live/Adaptive/Static execution, bounded native lowering, classes, packages, tooling, tests, and signed artifacts.

  1. 1Grayworth has not yet published a controlled same-host Gray-vs-C# / .NET application benchmark. Product comparisons on this page describe shipped Gray capabilities and the counterpart's documented platform model.
  2. 2Gray is commercially available through a controlled preview. Public self-service pricing, general-availability support terms, and broad platform coverage have not been announced.
  3. 3C# / .NET and associated product names are trademarks of their respective owners. Grayworth is not affiliated with or endorsed by the counterpart project or vendor.

Published and reviewed by Grayworth Engineering · 2026-07-26

Related decisions

Gray is built to replace the pressure path.

Bring the workload.
We’ll make it fast.

Start a Gray migration Browse every comparison