aqlaserializer 2.0.1.1170
dotnet add package aqlaserializer --version 2.0.1.1170
NuGet\Install-Package aqlaserializer -Version 2.0.1.1170
<PackageReference Include="aqlaserializer" Version="2.0.1.1170" />
paket add aqlaserializer --version 2.0.1.1170
#r "nuget: aqlaserializer, 2.0.1.1170"
// Install aqlaserializer as a Cake Addin #addin nuget:?package=aqlaserializer&version=2.0.1.1170 // Install aqlaserializer as a Cake Tool #tool nuget:?package=aqlaserializer&version=2.0.1.1170
AqlaSerializer is intended to serialize objects, not just data.
What the difference? Data serializers don't care much about language runtime specifics like references, inheritance, etc. In contrast, an object serializer should take such things into account.
AqlaSerializer primary goal is to support important .NET features like nested collections, multi-dimensional arrays, references, etc. And it still supports Google Protocol Buffers format.
Like protobuf-net AqlaSerializer makes possible to store objects as a small in size binary data (far smaller than xml). And it's more CPU effective than BinaryFormatter and other core .NET serializers (which could be unavailable on your target platform). Its format is designed to be: small in size - efficient data storage (far smaller than xml) cheap to process - both at the client and server platform independent - portable between different programming architectures extensible - to add new data to old messages.
The implementation is compatible with most of the .NET family, including .NET 3.5/4.0/4.5, .NET Standard 2.1 (.NET Core 3/3.1, .NET 5, .NET 6), Windows Phone 8, Silverlight 5, Android, iOS, UAP. The code is heavily based on Marc Gravell's protobuf-net but there are a lot of improvements and fixes.
The original protobuf-net project contains many "red" unit tests but I managed to fix a lot of them.
Some build configurations may be not available through nuget, you can download their binaries manually from github (use Project Site link).
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
.NET Framework | net35 is compatible. net40 is compatible. net403 was computed. net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 3.5
- aqla.runsharp (>= 1.0.22)
-
.NETFramework 4.0
- aqla.runsharp (>= 1.0.22)
-
.NETFramework 4.5
- aqla.runsharp (>= 1.0.22)
-
.NETStandard 2.1
- aqla.runsharp (>= 1.0.22)
- Lokad.ILPack (>= 0.1.6)
- System.Private.ServiceModel (>= 4.8.0)
- System.Reflection.Emit (>= 4.7.0)
- System.Reflection.Emit.ILGeneration (>= 4.7.0)
- System.Reflection.Primitives (>= 4.3.0)
- System.Runtime.Loader (>= 4.3.0)
- System.ServiceModel.Duplex (>= 4.8.0)
- System.ServiceModel.Http (>= 4.8.0)
- System.ServiceModel.NetTcp (>= 4.8.0)
- System.ServiceModel.Primitives (>= 4.8.0)
- System.ServiceModel.Security (>= 4.8.0)
- System.ServiceModel.Syndication (>= 5.0.0)
-
Portable Class Library (.NETFramework 4.0, Silverlight 5.0, Windows 8.0, WindowsPhone 8.0, WindowsPhoneApp 8.1)
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.1.1170 | 1,955 | 7/9/2022 |
2.0.1.1069 | 1,429 | 5/19/2022 |
2.0.1.1033 | 1,597 | 4/30/2022 |
2.0.1.1032 | 1,557 | 4/30/2022 |
2.0.1.1031 | 1,467 | 4/30/2022 |
2.0.1.969 | 1,476 | 4/30/2022 |
2.0.1.968 | 1,448 | 4/30/2022 |
2.0.1 | 1,608 | 12/27/2020 |
2.0.0.372 | 2,958 | 8/5/2016 |
2.0.0.245 | 2,297 | 5/30/2016 |
2.0.0.243 | 2,221 | 5/30/2016 |
2.0.0.241 | 2,160 | 5/30/2016 |
2.0.0.239 | 2,119 | 5/30/2016 |
2.0.0.234 | 2,449 | 5/28/2016 |
2.0.0.227 | 2,107 | 5/24/2016 |
2.0.0.187 | 2,096 | 5/5/2016 |
2.0.0.96 | 2,644 | 3/20/2016 |
1.0.0.938 | 2,333 | 1/13/2016 |
1.0.0.818 | 2,988 | 11/14/2015 |
1.0.0.793 | 2,686 | 11/1/2015 |
1.0.0.776 | 2,694 | 10/24/2015 |
1.0.0.767 | 2,585 | 10/19/2015 |
* 2.0.1.1070:
- dynamic string reference tracking fix
- UseBackingFieldsIfNoSetter is parameter is removed and enabled by default
* 2.0.1.1069:
- AutoTuple nullables serialization fix
- Stream.Position is not used unless it's necessary
* 2.0.1.1031:
- interfaces without subtypes and System.Object use dynamic type by default
- ISet fixes
- arrays can be deserialized into IList fields
* 2.0.1.968:
- added support for IReadOnlyDictionary, IReadOnlySet, ISet
* 2.0.1.0:
- added platform .NET Standard 2.1 including .NET Core 3 and .NET 5
* 2.0.0.372:
- Types lookup optimization for RuntimeTypeModel
- RuntimeTypeModel.Add allows to specify different type family filters or custom filter
- fixed concurrency bug when not final version of RootSerializer was published to clients
* 2.0.0.234:
- Improved compiled dll output size, compilation and cold run speed
- Added an option CompilerOptions.AlsoCompileInPlace (default: true)
- dlls for Xamarin.Android for emit support
- RunSharp dependency updated
* 2.0.0.227: V2 release
- Added CompileOptions.IterativeMode
- Fixed incorrect IL generated when list.Add method has a return value
- Fixed incorrect behavior of model.CloneAsUnfrozen
- Indexers won't be added as implicit fields
- Enum flags for model ids, see model.SetEnumFlagModelId
- RunSharp dependency updated
* 2.0.0.186: V2 RC2
- Removing field won't break reference tracking.
* 2.0.0.96: V2 RC
- Google Protocol Buffers format support is back (I've reconsidered this) - (de)serialization.
- Nested collections.
- Multi-dimensional arrays.
- Improved reference tracking (e.g. surrogate fix and referencing arrays from inside themselves).
- Improved versioning (e.g. between reference-nonreference-null-nonnull-dynamic).
- Optimizations for better output size.
- Collection subtypes (will read subtype number to create correct concrete type).
- Array types may be registered as collections and use full set of features (null support, etc) even when passed as root objects.
- Primitive types are allowed to be set to fields marked as dynamic type.
- Reference serialization will avoid using too much recursion in LateReference mode.
- Possibility to specify different attribute sets for different models (see ModelId property on attributes).
- Attributes to specify behavior on collection and collection elements (and nested) separately.
- Significant performance improvements.
* 1.0.0.938:
- more effficient memory usage
- if writing stream CanSeek and CanRead the serializer may use it as a buffer when its own buffer grows too big
* 1.0.0.818: merged changes from the fork origin (except DNX)
* 1.0.0.793: fixed AsReferenceDefault correct usage for legacy protobuf-net attributes
* 1.0.0.776:
- fixed issue when surrogated value was not correctly reference tracked
- add method is recognized not only on IEnumerable<T> but also on its inheritors like IReadOnlyCollection<T>
* 1.0.0.767 - improvements in list handling, merged changes from original protobuf-net
* 1.0.0.58 - initial AqlaSerializer release