Managed or native-backed
Where your C# session actually runs.
Independent C# engine
Session lifecycle, sequence recovery, connectivity and durable state are implemented in C#. 87 of 87 tracked API capabilities (3 recorded n/a) and all 27 session behaviors. Runs on ordinary sockets.
.NET Pure scope and results →C# API over hftnet / C++
A managed application boundary over the native provider: those behaviors deliberately delegate to the C++ core, and 13 of the 27 session behaviors are recorded as inherited. 86 of 87 tracked API capabilities (1 absent, 3 n/a).
.NET Native scope and results →Both load the bundled QuickFIX-format dictionaries for FIX 4.0 to FIX 5.0 SP2 and FIXT 1.1 at runtime, carry typed builders and views for the same 17 message families, and record writer-lock arbitration, standby retry, promotion and sequence restore for high availability. FAST 1.1 differs: .NET Pure has generated whole-message codecs, while .NET Native binds native stop-bit and presence-map primitives and keeps its whole-message codecs managed. FIX versions supported and binary-protocol scope →
.NET Pure
A managed FIX engine, no native provider.
Because .NET Pure uses ordinary sockets, kernel bypass reaches it through preload only:
- Solarflare Onload and Mellanox VMA: available beneath .NET Pure as interposers.
- TCPDirect and SocketXtreme: not available; they need a vendor SDK and a native transport.
- ef_vi / ibverbs raw receive: not available.
HP reference campaign, collected 19 September 2026 and recorded 20 September 2026 on the HP reference host (Intel Xeon Gold 6254): one session at a sustained 50,000 requests per second, response time from the intended send slot, so scheduler delay is included.
| Transport | p50 | p99 | p99.9 | Maximum |
|---|---|---|---|---|
| Kernel TCP | 20.794 µs | 24.811 µs | 28.828 µs | 60.730 µs |
| Solarflare Onload | 11.473 µs | 11.873 µs | 12.004 µs | 30.937 µs |
| Mellanox VMA | 11.999 µs | 12.231 µs | 12.368 µs | 32.406 µs |
In the diagnostic SCAN sweep of 29 September 2026 (kernel TCP, one session), .NET Pure held 50,000 requests per second at 34.050 µs p50 and first saturated at 75,000 per second. .NET Pure FIX engine benchmarks →
.NET Native
C# on top of the native engine.
.NET Native trades an independent implementation for the native transport integrations of the C++ FIX engine: Onload and VMA by preload, TCPDirect and SocketXtreme with initiator and acceptor routes, and raw receive through the vendor-neutral facade.
Same HP reference campaign, 19–20 September 2026, 50,000 requests per second:
| Transport | p50 | p99 | p99.9 | Maximum |
|---|---|---|---|---|
| Kernel TCP | 15.481 µs | 16.537 µs | 19.042 µs | 73.840 µs |
| Solarflare Onload | 6.788 µs | 7.203 µs | 7.310 µs | 48.914 µs |
| Mellanox VMA | 7.483 µs | 7.753 µs | 8.316 µs | 49.963 µs |
| Solarflare TCPDirect | 6.347 µs | 6.516 µs | 6.610 µs | 46.143 µs |
| Mellanox SocketXtreme | 7.393 µs | 7.971 µs | 9.310 µs | 51.054 µs |
In the diagnostic SCAN sweep of 29 September 2026, .NET Native held 75,000 requests per second at 27.221 µs p50 and first saturated at 100,000 per second. .NET Native FIX engine benchmarks →
Each HP percentile is the mean of three 30-second runs after a 5-second warm-up; the maximum is the mean of the three maxima. The SCAN sweep ran with BrokerForge housekeeping processes on other cores and stays labelled diagnostic. How the campaign was measured · capacity brackets · .NET codec microbenchmarks · .NET engine comparison
QuickFIX/n counterpart
Coming from QuickFIX/n.
Both .NET flavors are LibHFT’s counterparts of QuickFIX/n ↗. Reuse its XML dictionaries after validation; classify each QuickFIX/n setting as direct, semantic translation, application-owned, unsupported or sensitive; then port callbacks against the chosen flavor and prove reconnect, resend, gap fill and durable-write refusal before cutover.
Selection
Picking a .NET flavor.
- Choose .NET Pure when a standalone managed engine is the architectural requirement.
- Choose .NET Native when the C# application should reuse the C++ engine and its native transports, TCPDirect and SocketXtreme included.
- The same split exists for the JVM: Java FIX engine (Java Pure or Java/JNI). The Rust FIX engine is independent.
- Benchmark the exact flavor, transport, message path and deployment hardware you will operate.