Add new transport based on MessagePack#591
Merged
Merged
Conversation
Co-authored-by: Daniel-Svensson <3167509+Daniel-Svensson@users.noreply.github.com>
Co-authored-by: Daniel-Svensson <3167509+Daniel-Svensson@users.noreply.github.com>
Co-authored-by: Daniel-Svensson <3167509+Daniel-Svensson@users.noreply.github.com>
Co-authored-by: Daniel-Svensson <3167509+Daniel-Svensson@users.noreply.github.com>
* Parameter passing WORKS * DateTime passing don't throw (Need to investigate)
…ks working. 365 tests are now passing (with submit not yet working) , 323 failing
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Daniel-Svensson
commented
Jun 15, 2026
16 tasks
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces MessagePack (application/vnd.msgpack) as a new wire format for OpenRiaServices over ASP.NET Core HTTP, including server-side serialization providers, client-side HTTP domain client support, and associated codegen/test/doc updates.
Changes:
- Added MessagePack serialization provider and request/response envelope handling in
OpenRiaServices.Hosting.AspNetCore, plus newAddMessagePackSerialization()builder APIs. - Added MessagePack-capable HTTP domain client factory/client and supporting converters on the client side.
- Updated code generation baselines and tooling to add a PolyType “deserialization constructor” workaround for required members; added/updated tests and documentation.
Reviewed changes
Copilot reviewed 63 out of 63 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Test/OpenRiaservices.EndToEnd.Wcf.Test/Data/CustomMethodTests.cs | Adjusts expected failure behavior for nonexistent entity action under MessagePack conditional builds |
| src/Test/OpenRiaservices.EndToEnd.Wcf.Test/Data/ComplexTypeTests.cs | Improves assertion message clarity |
| src/Test/OpenRiaservices.EndToEnd.AspNetCore.Test/OpenRiaservices.EndToEnd.AspNetCore.Test.csproj | Links MessagePack helper code from test website into test project (with exclusions) |
| src/Test/OpenRiaservices.EndToEnd.AspNetCore.Test/Main.cs | Switches test client factory selection to MessagePack under NET10 |
| src/Test/Desktop/OpenRiaServices.Common.DomainServices.Test/Baselines/FullTypeNames/Scenarios/TestProvider_Scenarios_CodeGen.g.vb | Baseline update for new PolyType deserialization constructor |
| src/Test/Desktop/OpenRiaServices.Common.DomainServices.Test/Baselines/FullTypeNames/Scenarios/TestProvider_Scenarios_CodeGen.g.cs | Baseline update for new PolyType deserialization constructor |
| src/Test/Desktop/OpenRiaServices.Common.DomainServices.Test/Baselines/Default/Scenarios/TestProvider_Scenarios_CodeGen.g.vb | Baseline update for new PolyType deserialization constructor |
| src/Test/Desktop/OpenRiaServices.Common.DomainServices.Test/Baselines/Default/Scenarios/TestProvider_Scenarios_CodeGen.g.cs | Baseline update for new PolyType deserialization constructor |
| src/Test/Desktop/OpenRiaServices.Common.DomainServices.Test/Baselines/Default/Mocks/MockCustomers.g.vb | Baseline update for new PolyType deserialization constructor |
| src/Test/Desktop/OpenRiaServices.Common.DomainServices.Test/Baselines/Default/Mocks/MockCustomers.g.cs | Baseline update for new PolyType deserialization constructor |
| src/Test/AspNetCoreWebsite/Properties/launchSettings.json | Reorders settings / adjusts ports for test website |
| src/Test/AspNetCoreWebsite/Program.cs | Enables MessagePack serialization in the ASP.NET Core test website |
| src/Test/AspNetCoreWebsite/MessagePack/XElementConverter.cs | Adds MessagePack converter for XElement |
| src/Test/AspNetCoreWebsite/MessagePack/CustomComparerProvider.cs | Adds custom comparer provider for MessagePack serialization |
| src/Test/AspNetCoreWebsite/MessagePack/BinaryConverter.cs | Adds MessagePack converter for System.Data.Linq.Binary |
| src/OpenRiaServices.Tools/Framework/DataContractProxyGenerator.cs | Adds PolyType constructor-shape deserialization constructor generation in CodeDOM generator |
| src/OpenRiaServices.Tools.TextTemplate/Framework/CSharpGenerators/Templates/DataContractGeneratorTemplate.ttinclude | Adds PolyType constructor-shape constructor generation to T4 template |
| src/OpenRiaServices.Tools.TextTemplate/Framework/CSharpGenerators/CSharpEntityGenerator.cs | Regenerates compiled T4 output including new ctor generation logic |
| src/OpenRiaServices.Tools.TextTemplate/Framework/CSharpGenerators/CSharpComplexObjectGenerator.cs | Regenerates compiled T4 output including new ctor generation logic |
| src/OpenRiaServices.Server/Test/DomainMethodServerTest.cs | Updates tests for stricter argument validation helpers |
| src/OpenRiaServices.Server/Framework/Data/KnownTypeUtilities.cs | Switches known type collection to HashSet and simplifies unioning behavior |
| src/OpenRiaServices.Server/Framework/Data/DomainServiceDescription.cs | Adds GetCustomMethodOrThrow and refactors known-type closure computation |
| src/OpenRiaServices.Server/Framework/Data/DomainService.cs | Uses GetCustomMethodOrThrow during operation resolution |
| src/OpenRiaServices.Hosting.Wcf/Framework/Wcf/DomainServiceSerializationSurrogate.cs | Exposes surrogate helpers/factories for MessagePack integration |
| src/OpenRiaServices.Hosting.Wcf/Framework/Wcf/DataContractSurrogateGenerator.cs | Adds ASP.NET Core-specific surrogate constructor generation path |
| src/OpenRiaServices.Hosting.AspNetCore/Test/OpenRiaServices.Hosting.AspNetCore.Test/Serialization/SerializationOptionsTests.cs | Adds basic MessagePack roundtrip and builder chaining tests |
| src/OpenRiaServices.Hosting.AspNetCore/Test/OpenRiaServices.Hosting.AspNetCore.Test/Serialization/MessagePack/FilteredTypeShapeProviderTests.cs | Adds tests around filtered shape provider behavior and cycles |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/README.md | Documents enabling MessagePack wire format |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/OpenRiaServices.Hosting.AspNetCore.csproj | Adds net10 target and MessagePack + hashing package refs |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/SerializationProvider.cs | Splits serializer response-writing APIs into query/invoke/submit + error paths |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MimeTypes.cs | Adds MessagePack MIME constant |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePackSerializationProvider.cs | New MessagePack serialization provider |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePackSerializationOptions.cs | New MessagePack options type |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/MessagePackUtility.cs | Shared MessagePack utilities (discriminator/comparers/config) |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/MessagePackResponseEnvelopeBase.cs | Adds MessagePack envelope model types |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/MessagePackRequestSerializer.cs | Implements MessagePack request/response serialization |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/FilteredTypeShapeProviderOptions.cs | Adds options controlling association member inclusion |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/FilteredTypeShapeProvider.cs | Implements filtered shape provider wrappers for MessagePack serialization |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/Converters/SurrogateConverter.cs | Adds server-side surrogate-based converter for entities/complex types |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/Converters/MethodParametersConverter.cs | Adds server-side converter for method parameter maps |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/MessagePack/Converters/ChangeSetEntryConverter.cs | Adds server-side ChangeSetEntry converter for submit payloads |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Serialization/DataContractRequestSerializer.cs | Updates DataContract serializer to new query/invoke/submit method split |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Operations/SubmitOperationInvoker.cs | Uses submit-specific serializer API |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Operations/QueryOperationInvoker.cs | Uses query-specific serializer API |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/Operations/InvokeOperationInvoker.cs | Uses invoke-specific serializer API |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/OpenRiaServicesOptionsBuilder.cs | Adds AddMessagePackSerialization() builder overloads |
| src/OpenRiaServices.Hosting.AspNetCore/Framework/AspNetCore/OpenRiaServicesConfigurationBuilder.cs | Fixes argument validation |
| src/OpenRiaServices.Client/Framework/OpenRiaServices.Client.csproj | Adds MessagePack dependency |
| src/OpenRiaServices.Client/Framework/Entity.cs | Adds MessagePack serialization callbacks integration |
| src/OpenRiaServices.Client/Framework/ComplexObject.cs | Adds MessagePack serialization callbacks integration |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/OpenRiaServices.Client.DomainClients.Http.csproj | Adds MessagePack + hashing deps and links shared utilities |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePackHttpDomainClientFactory.cs | Adds MessagePack client factory and serializer/converter setup |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePack/MessagePackMethodParameters.cs | Adds wrapper for parameter metadata + values |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePack/MessagePackHttpDomainClient.cs | Adds MessagePack HTTP domain client |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePack/Envelopes.cs | Adds client-side envelope models |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePack/Converters/ObjectConverter.cs | Adds discriminator-based “object” converter for known types |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePack/Converters/MessagePackMethodParametersConverter.cs | Adds client-side parameter serialization converter |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/MessagePack/Converters/ChangeSetEntryConverter.cs | Adds client-side ChangeSetEntry converter |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/Http/MetodParameters.cs | Seals MethodParameters |
| src/OpenRiaServices.Client.DomainClients.Http/Framework/Http/HttpDomainClient.cs | Exposes service interface type to derived clients |
| src/MessagePackWorkarounds.md | Adds draft notes on MessagePack limitations/workarounds |
| NuGet/OpenRiaServices.Client.Core.nuspec | Adds package dependencies for MessagePack + hashing |
| docs/messagepack-serialization.md | Adds draft MessagePack wire schema documentation |
Daniel-Svensson
commented
Jun 16, 2026
Daniel-Svensson
commented
Jun 16, 2026
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Daniel Svensson <Daniel-Svensson@users.noreply.github.com>
fix xdocument comments Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Daniel-Svensson
enabled auto-merge (squash)
June 16, 2026 20:10
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


New Features
application/vnd.msgpackMIME typeAddMessagePackSerialization()ASP.NET Core builder methods for streamlined configurationDocumentation
Bug Fixes
Benchmarks
Query of 20 000 relativly small text heavy entities
Query of 50
Summary by CodeRabbit
Release Notes
application/vnd.msgpack) with request/response envelopes.AddMessagePackSerialization()for server configuration.