Versatile Serialization allows a programmer to comply with specific data format requirements by using a declarative way of programming instead of writing code.
Did you ever need to implement things like this?
..or this?
..or even this?
Do it the declarative way!
Versatile Serialization defines a Class model of attributes that are applied to Classes and Class members that take part in the (de)serialization process. These attributes carry formatting instructions and settings that allow precise control over how data shall be formatted or interpreted during serialization and deserialization respectively. The entire processing is performed under the control of the VSFactory Class, which is the lead vehicle and major building block for the Versatile Serialization (and deserialization) library.
Versatile Serialization is specifically useful when building communication and data import/export functionality into Microsoft .NET applications, such as when raw data formats are generated and designed for:
- Peer-to-peer communications
- File based data interchanges
- Inter-process communications
- Persistence
- In Cases where standard serialization facilities cannot be used because of the specific formatting demands.
In addition, Versatile Serialization is valuable in the following ways:
- The time saving measures and increased productivity in developing such data exchange processes.
- Allows the users to easily keep such applications maintained and transparent.
- Minimal usage of the amount of its own code that is required and used to give a mechanism that allows the interchange of data with other applications.
- Allows changes and extensions to such data exchanges or communications to be done with ease.
Features
From the points below, one can see how the product will enhance the flexibility of serialization and deserialization tasks.
- Built-in support of all primitive data types.
- Works with Classes and Structures
- Supports Chars, Enums, Strings, DateTime, TimeSpan and Guid.
- Supports nullable types.
- Different attributes are allowed on field level to distinguish serialization into binary or text format.
- Various attribute parameters allow fine tuning the format specification by examples; by defining fixed sizes, alignments, fillers, culture, encodings only to name a few.
- On the so-called container level the encompassing class or structures, general definition like data headers and trailers, separator and quotation sequences, escaping rules and others are possible.
- Supports declared counters, meaning fields that automatically receive (during serialization) values derived from their “neighborhood data” like a byte- or character-length of subsequent fields or the element count of lists or arrays. In de-serialization, counter are used to drive arrangement of raw data into fields.
- Support of so-called sub-containers, meaning references from a member of a serializable container (a Class or structure) to other container classes.
- Inheritance of serializable containers, allowing different kind of arrangements for the ordering of the successor’s and predecessor’s data in a byte stream.
- Support or arrays and lists of all the supported types (including sub-containers).
- Built in diagnostic functions can be activated to track problems at run time.
- Customizable de-serialization process on field basis; for example its easy implementation of CRC calculation and verification routines.
- Declaration of optional elements.
- Handling floating point values like integers by declaration.
- Little Endian or big Endian encoding.
- Declarative translation of Enum values to and from byte sequences, numbers of strings.
- Specification of candidate classes for de-serializing into one of several possible classes depending on data characteristics.
- De-serialization of huge streams into lists of objects of classes from a candidate list.
- Candidate selection by declared criterions or by customization code.
- Nested data structures.
- Customized (de)Serializable types.
- Declarable data escaping rules.
- Writes to (and reads from) streams and bytes arrays.
- 100% C#, fully managed, no unsafe code