OneOf
MessagePack for C# (.NET, .NET Core, Unity, Xamarin)
OneOf | MessagePack for C# (.NET, .NET Core, Unity, Xamarin) | |
---|---|---|
25 | 19 | |
3,225 | 5,288 | |
- | 1.4% | |
2.9 | 7.2 | |
3 months ago | 4 days ago | |
C# | C# | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
OneOf
-
The Monad Invasion - Part 1: What's a Monad?
OneOf
-
Discriminated Unions: Essa feature faz falta no CSharp
Inclusive, para suportar esse tipo de funcionalidade, foi criada a biblioteca OneOf: mcintyre321/OneOf: Easy to use F#-like ~discriminated~ unions for C# with exhaustive compile time matching (github.com)
- Easy to use F#-like ~discriminated~ unions for C# with big compile time matching
-
Rolled my own Result<T,E> type that seems to work better than others.
Then I found discussion of the OneOf package, and then found some simpler Result code. I tried using that code but I found the use of Match and lambdas meant I couldn't simply break out of the loop in my example.
-
What's new in C# 12: overview
Until that feature lands there's this https://github.com/mcintyre321/OneOf which is pretty nice.
- The combined power of F# and C#
-
Exception handling between controller and service
Yep, it's called result pattern, aforementioned above. There was two highlighted implementations - OneOf, FluentResults.
-
Have you heard of AnyOf .NET Lib?
No he didn't. He made a video of the OneOf library. Not this one.
-
Have you heard of AnyOf C# Library?
We already have OneOf https://github.com/mcintyre321/OneOf I've used it in Production multiple times and it's an awesome way to keep everything strongly typed and eliminate null reference exceptions.
- What your hidden nuget gems ?
MessagePack for C# (.NET, .NET Core, Unity, Xamarin)
- .NET 9 will be putting BinaryFormatter out to pasture
-
Fury: 170x faster than JDK, fast serialization powered by JIT and Zero-copy
Given it's a binary serialization framework, it should not be too difficult, because the domain is well-explored and numerous libraries exist in C# which address same goals that Fury does.
More popular/newer examples are https://github.com/Cysharp/MemoryPack (which is similar to Fury with its own spec, C#-code first schema), https://github.com/MessagePack-CSharp/MessagePack-CSharp or even gRPC / Protobuf tooling https://github.com/grpc/grpc-dotnet
-
Native AOT Overview
With Unity/IL2CPP stuff: For general-purpose serialization libraries like JSON, you sometimes need to provide hints to make sure types are included: https://github.com/jilleJr/Newtonsoft.Json-for-Unity/wiki/Fi...
For schema serialization on known types, there are codegen tools (i.e. moc for MessagePack): https://github.com/neuecc/MessagePack-CSharp
MessagePack is migrating to Rosalyn code generators, so basically invisible codegen. Cysharp's newer serialization library, MessagePack, already uses this: https://github.com/Cysharp/MemoryPack
-
Dupes in bonelab?
Thanks, I'm sure I'll need it, though I do have my own platform with serialization set up already that I'm hoping I can port relatively easily (It's backended with MessagePack C# which is a lovely serializer for Unity.)
-
Does MessagePack-CSharp support OneOf type?
In the Road map of features #119 for MessagePack-CSharp, they checked the box for:
-
Dotnet API super slow?
Try MessagePack for serialization. It will help to reduce the size of the message and the time of serialization.
- Need persistent data across runs of your Unity game? Don't use PlayerPrefs for your game state! Here's how you can easily store your arbitrary game state in files instead.
-
Practice resources for handling and optimizing large game data sets?
I mentioned JSON, but there are many formats that are much more efficient. I can mention FlatBuffers, MessagePack and ProtoBuf. These are the ones I've used myself, and personally I'm most comfortable with MessagePack and ProtoBuf. I don't think the performance would be an issue if you had to choose between these three, it's mostly the API that is different.
- any good binary serializers that are not assembly dependent
-
LIVE: Otimizando aplicações .NET com MessagePack.
Biblioteca Nuget para C#
What are some alternatives?
language-ext - C# functional language extensions - a base class library for functional programming
Json.NET - Json.NET is a popular high-performance JSON framework for .NET
csharp-monad - Library of monads for C#
Protobuf.NET - Protocol Buffers library for idiomatic .NET
ValueOf - Deal with Primitive Obsession - define ValueObjects in a single line (of C#).
Protobuf - Protocol Buffers - Google's data interchange format
csharplang - The official repo for the design of the C# programming language
ZeroFormatter - Infinitely Fast Deserializer for .NET, .NET Core and Unity.
Rop.OneOfExtensionGenerator - OneOf Helper Extensions Source Generator
Msgpack-Cli - MessagePack implementation for Common Language Infrastructure / msgpack.org[C#]
TensorFlowSharp - TensorFlow API for .NET languages
FlatSharp - Fast, idiomatic C# implementation of Flatbuffers