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 |
||
|---|---|---|
| .. | ||
| AcBinaryInputFormatter.cs | ||
| AcBinaryMvcBuilderExtensions.cs | ||
| AcBinaryOutputFormatter.cs | ||
| README.md | ||
README.md
Mvc
⚠️ TEMPORARILY DISABLED — formatter sources block-commented (
/* ... */) andMicrosoft.AspNetCore.AppFrameworkReference removed fromAyCode.Services.csproj(downstream net10.0 Hybrid client conflict onMicrosoft.AspNetCore.Mvcnamespace). 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 viaPipeReader.Create(Request.Body), drains chunks intoAsyncPipeReaderInputon the calling thread while a backgroundTask.Rundeserializes incrementally viaAcBinaryDeserializer.Deserialize(input, ModelType, opts). ProblemDetails error flow on failure (ModelState.TryAddModelError→ 400 +application/problem+json). Cancellation honorsHttpContext.RequestAborted.AcBinaryOutputFormatter.cs— WrapsResponse.BodyasPipeWriter, callsAcBinarySerializer.SerializeChunked(Object, ObjectType, writer, opts)(raw mode — pure AcBinary bytes, no per-chunk framing).pipeWriter.CompleteAsync()in finally.AcBinaryMvcBuilderExtensions.cs—IMvcBuilder.AddAcBinaryFormatters(...)+IMvcCoreBuilder.AddAcBinaryFormatters(...). Inserts both formatters at index 0 ofMvcOptions.InputFormatters/OutputFormattersso AcBinary is preferred when the client'sAcceptheader 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.ReadAsync → input.Feed). The serializer surface ends at AsyncPipeReaderInput — AcBinaryDeserializer itself does not know about PipeReader. This mirrors the SignalR pattern (AcBinaryHubProtocol.TryParseChunkData does the same state.Buffer.Write(span)-loop).