public byte[] SerializeAvro(InheritedEntityAvro thisObj) { using (var ms = new MemoryStream()) { var enc = new BinaryEncoder(ms); var writer = new SpecificDefaultWriter(InheritedEntityAvro._SCHEMA); // Schema comes from pre-compiled, code-gen phase writer.Write(thisObj, enc); return ms.ToArray(); } }
public InheritedEntityAvro DeserializeAvro(byte[] bytes) { using (var ms = new MemoryStream(bytes)) { var dec = new BinaryDecoder(ms); var reader = new SpecificDefaultReader(InheritedEntityAvro._SCHEMA, InheritedEntityAvro._SCHEMA); var regenAvroMsg = new InheritedEntityAvro(); reader.Read(regenAvroMsg, dec); return regenAvroMsg; } }
private void CompareSchemas() { var eCodeGenEntity = new InheritedEntityAvro(); // Extra test for schema compare, save schema to compare later string avroSchema = eCodeGenEntity.Schema.ToString(); // Extra test for schema compare, save schema to compare later var serializer = new AvroSerializer(typeof(InheritedEntity)); string avroMsftSchema = serializer.Schema; Console.Write("\nThe Avro MSFT schema and the Avro Apache schema "); if (String.IsNullOrEmpty(avroSchema) || (avroSchema != avroMsftSchema)) { Console.WriteLine("do NOT MATCH !!!\n"); Console.WriteLine("Avro Apache schema: {0}", avroSchema); Console.WriteLine("Avro MSFT schema : {0}", avroMsftSchema); } else Console.WriteLine("match.\n"); }
private void AvroToAvroMsft() { // avro ser => avro-msft deser var e = new InheritedEntity(); e.FillDummyData(); // Avro-Apache serialize var eCodeGenEntity = new InheritedEntityAvro(); eCodeGenEntity.InjectFrom(e); var eBytes = SerializeAvro(eCodeGenEntity); // Avro MSFT deserialize var eAppEntityRegen = DeserializeAvroMsft(eBytes); // Compare the object (in JSON, easiest to do so) var eJson = JsonConvert.SerializeObject(e); var eRegenJson = JsonConvert.SerializeObject(eAppEntityRegen); Console.Write("avro ser => avro-msft deser "); if (eJson != eRegenJson) Console.WriteLine("FAILED !!!"); else Console.WriteLine("passed"); }