AyCode.Core/AyCode.Services/Mvc
Loretta 651e2a0b9f [LOADED_DOCS: 3 files, no new loads]
SIMD UTF-8 upgrades, i18n test data, MVC disabled

- Switch all test/benchmark data to Hungarian UTF-8 strings for i18n coverage
- Add AVX-512BW, Vector256, and Vector128 SIMD paths for UTF-8/UTF-16 encode/decode (ASCII and multi-byte) in binary serializer/deserializer
- Update WireMode docs for encoding guidance per workload/host
- Block-comment and disable MVC formatters and Microsoft.AspNetCore.App reference due to .NET 10 Hybrid client conflict; update docs to reflect temporary state
- Update appsettings: replace WaitForFlush with FlushPolicy
- Revise BINARY_TODO.md for SIMD transcoder progress and next steps
2026-05-05 15:06:11 +02:00
..
AcBinaryInputFormatter.cs [LOADED_DOCS: 3 files, no new loads] 2026-05-05 15:06:11 +02:00
AcBinaryMvcBuilderExtensions.cs [LOADED_DOCS: 3 files, no new loads] 2026-05-05 15:06:11 +02:00
AcBinaryOutputFormatter.cs [LOADED_DOCS: 3 files, no new loads] 2026-05-05 15:06:11 +02:00
README.md [LOADED_DOCS: 3 files, no new loads] 2026-05-05 15:06:11 +02:00

README.md

Mvc

⚠️ TEMPORARILY DISABLED — formatter sources block-commented (/* ... */) and Microsoft.AspNetCore.App FrameworkReference removed from AyCode.Services.csproj (downstream net10.0 Hybrid client conflict on Microsoft.AspNetCore.Mvc namespace). Re-enable when split into a separate NuGet package / solution. Description below documents the intended state.

ASP.NET Core MVC formatters for AcBinary wire format. Standard MVC pipeline integration — works with both controller-based MVC and Minimal API.

Topic docs: AyCode.Services/docs/MVC/README.md — media type, request/response flow, configuration, ProblemDetails error model. Binary serializer: ../../AyCode.Core/AyCode.Core/docs/BINARY/README.md

Key Files

  • AcBinaryInputFormatter.cs — Reads request body via PipeReader.Create(Request.Body), drains chunks into AsyncPipeReaderInput on the calling thread while a background Task.Run deserializes incrementally via AcBinaryDeserializer.Deserialize(input, ModelType, opts). ProblemDetails error flow on failure (ModelState.TryAddModelError → 400 + application/problem+json). Cancellation honors HttpContext.RequestAborted.
  • AcBinaryOutputFormatter.cs — Wraps Response.Body as PipeWriter, calls AcBinarySerializer.SerializeChunked(Object, ObjectType, writer, opts) (raw mode — pure AcBinary bytes, no per-chunk framing). pipeWriter.CompleteAsync() in finally.
  • AcBinaryMvcBuilderExtensions.csIMvcBuilder.AddAcBinaryFormatters(...) + IMvcCoreBuilder.AddAcBinaryFormatters(...). Inserts both formatters at index 0 of MvcOptions.InputFormatters / OutputFormatters so AcBinary is preferred when the client's Accept header allows.

Media Type

application/vnd.acbinary (vendor tree). Configurable per-instance via SupportedMediaTypes.Add(...) if a different type is needed.

Layering

The formatter owns the transport-specific drain-loop (PipeReader.ReadAsyncinput.Feed). The serializer surface ends at AsyncPipeReaderInputAcBinaryDeserializer itself does not know about PipeReader. This mirrors the SignalR pattern (AcBinaryHubProtocol.TryParseChunkData does the same state.Buffer.Write(span)-loop).