Core aycode behaviour, business logic or general models
Go to file
Loretta c29b3daa0e Refactor JSON/SignalR infra; add full test & benchmark suite
Major overhaul of JSON serialization/deserialization:
- Added AcJsonDeserializationException for clearer error reporting.
- Robust JSON validation, type checking, and double-serialization detection.
- Fast-path primitive (de)serialization for all common .NET types.
- Direct support for Dictionary<TKey, TValue> and improved collection handling.
- Enhanced $id/$ref reference resolution and in-place merging.
- Optimized property metadata caching and filtering.
- Comprehensive error handling with detailed messages.
- Extensive new tests for primitives, collections, references, and error cases.
- Benchmarks for serialization, deserialization, and merge scenarios.

SignalR infrastructure improvements:
- Refactored AcSignalRClientBase/AcWebSignalRHubBase for testability (virtual methods, test constructors).
- Added SignalRRequestModelPool for efficient request/response tracking.
- Improved parameter deserialization and IdMessage handling.
- New tags (PingTag, EchoTag) for SignalR messaging.

New test and benchmark infrastructure for SignalR:
- Shared test models and data factories for DTOs, primitives, and complex graphs.
- In-memory, dependency-free SignalR client/hub for round-trip testing.
- Exhaustive test suites for message processing, method invocation, and edge cases (including prior production bugs with Task<T>).
- Benchmarks for SignalR serialization, deserialization, and round-trip performance.

Other changes:
- Improved TaskHelper.WaitTo/WaitToAsync with more accurate polling and cancellation support.
- ExtensionMethods.InvokeMethod now properly unwraps Task/ValueTask results.
- General code cleanup, improved comments, and removal of obsolete code.
- Project references updated for shared test/benchmark infrastructure.

These changes deliver a robust, high-performance, and fully tested JSON/SignalR (de)serialization system, ready for production and advanced testing scenarios.
2025-12-11 21:25:50 +01:00
AyCode.Core Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Core.Server Enhance JSON handling and add hybrid reference support 2025-12-08 15:50:48 +01:00
AyCode.Core.Tests Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Core.Tests.Internal Enhance JSON handling and add hybrid reference support 2025-12-08 15:50:48 +01:00
AyCode.Database Enhance JSON handling and add hybrid reference support 2025-12-08 15:50:48 +01:00
AyCode.Database.Tests microsoft packages update 2025-12-01 16:18:36 +01:00
AyCode.Database.Tests.Internal Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Entities AcModelDtoExtension improvements 2025-09-12 13:36:11 +02:00
AyCode.Entities.Server Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Interfaces improvements, fixes 2025-11-26 09:42:00 +01:00
AyCode.Interfaces.Server Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Models Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Models.Server Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Services Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Services.Server Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Services.Server.Tests Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Services.Tests Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Utils microsoft packages update 2025-12-01 16:18:36 +01:00
AyCode.Utils.Server Add .targets file 2025-08-31 13:07:34 +02:00
BenchmarkSuite1 Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
.gitattributes first commit 2023-11-08 09:35:34 +01:00
.gitignore lot of improvements and new mstests... 2025-12-11 21:24:32 +01:00
AyCode.Core.sln Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Core.targets CollectionExtensions UpdateCollectionById<TId> 2025-11-07 14:10:30 +01:00