A high-performance polymorphic serializer for .NET, designed for safe message transfer in distributed systems.
Hyperion is a high-performance polymorphic serializer for .NET, designed to safely transfer messages in distributed systems like service buses or actor-based frameworks. It solves the problem of type loss during serialization by encoding type manifests, ensuring objects deserialize with their exact original types. This is crucial for pattern matching and message handling in systems where type fidelity is required.
Developers building distributed .NET systems, especially those using actor models (like Akka.NET), message buses, or any architecture requiring reliable cross-process or cross-network object serialization with polymorphic support.
Developers choose Hyperion for its combination of polymorphism, performance, and safety features like surrogates and type filtering, which are essential for real-time messaging where JSON or Protobuf may fall short on type preservation or flexibility.
Polymorphic serialization for .NET
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Encodes type manifests for each value, ensuring primitives like float vs. double are deserialized correctly, solving common issues with JSON serialization where type information is lost.
Allows serialization of context-bound objects via surrogates, enabling translation to and from a surrogate representation, which is essential for frameworks like Akka.NET with live actor references.
Supports type filtering through whitelisting or blacklisting using ITypeFilter or TypeFilterBuilder, preventing injection attacks during deserialization for enhanced security in distributed systems.
Optimized for speed and small payloads, with benchmarks showing competitive performance against MS Bond and Protobuf.NET, especially in pre-registered types mode with 38-byte sizes and 573 ms total time.
Labeled as BETA (v0.9.14), indicating potential instability, incomplete features, and lack of production-ready guarantees, which could pose risks for critical systems.
Requires manual setup for surrogates, type filtering, and version tolerance modes, adding initial complexity compared to drop-in serializers like JSON.NET for simple use cases.
Admits in the README that for true version tolerance over time, such as in event sourcing or message queues, Protobuf or MS Bond are better choices, as Hyperion is designed for point-to-point real-time scenarios.