public void TestGraphSerializationClass1() { using (FileStream fileStream = new FileStream("Class1Graph.txt", FileMode.Create)) { serializer.Serialize(fileStream, _class1); } using (FileStream fileStream = new FileStream("Class1Graph.txt", FileMode.Open)) { _class1Deserialized = (Class1)serializer.Deserialize(fileStream); } Assert.IsNotNull(_class1Deserialized); Assert.AreNotSame(_class1, _class1Deserialized); Assert.AreEqual(_class1.TextData, _class1Deserialized.TextData); Assert.AreEqual(_class1.DateTimeData, _class1Deserialized.DateTimeData); Assert.AreEqual(_class1.DoubleData, _class1Deserialized.DoubleData); Assert.AreEqual(_class1.Class2.TextData, _class1Deserialized.Class2.TextData); Assert.AreEqual(_class1.Class2.DateTimeData, _class1Deserialized.Class2.DateTimeData); Assert.AreEqual(_class1.Class3.TextData, _class1Deserialized.Class3.TextData); Assert.AreEqual(_class1.Class3.DateTimeData, _class1Deserialized.Class3.DateTimeData); }
static void Main(string[] args) { MySerializer ser = new MySerializer(); using (FileStream file = File.OpenRead("../../../Tools/nwind.proto.bin")) { DatabaseCompat db = (DatabaseCompat)ser.Deserialize(file, null, typeof(DatabaseCompat)); Console.WriteLine("Orders: {0}", db.Orders.Count); int sum = 0; foreach (OrderCompat order in db.Orders) { sum += order.Lines == null ? 0 : order.Lines.Count; } Console.WriteLine("Lines: {0}", sum); using (MemoryStream ms = new MemoryStream()) { ser.Serialize(ms, db); Console.WriteLine("Bytes: {0}", ms.Length); } } // ArrayList names = new ArrayList(); // foreach(FieldInfo field in typeof(OpCodes).GetFields()) // { // if(field.IsStatic) names.Add(field.Name); // } // names.Sort(); // foreach(string name in names) Console.WriteLine(name); }
public virtual void Save() { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル保存開始").ToString()); #endif List <string> list; lock (lockobject_) list = favoriteStreamClassList_.Select(x => x.Owner).ToList(); while (true) { try { MySerializer.Serialize <List <string> >(list, FilePath); IsChanged = false; } catch (DirectoryNotFoundException) { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Error, new StringBuilder(40).Append("[").Append(FileName).Append("] Favoriteフォルダが見つかりません").ToString()); #endif Directory.CreateDirectory("favorite"); continue; } catch (Exception ex) { MyTraceSource.TraceEvent(TraceEventType.Error, ex); } break; } #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル保存完了").ToString()); #endif }
public void CheckDeserializedNullReference() { if (File.Exists(path)) { File.Delete(path); } Class4 class4 = new Class4("Deskorolka", true, 4.9d); MySerializer mySerializer = new MySerializer(); using (FileStream fsSerialize = new FileStream(path, FileMode.Create)) { mySerializer.Serialize(fsSerialize, class4); } Class4 class4Deserialized; using (FileStream fsDeserialize = new FileStream(path, FileMode.Open)) { class4Deserialized = (Class4)mySerializer.Deserialize(fsDeserialize); } Assert.AreNotSame(null, class4Deserialized); Assert.AreSame(null, class4Deserialized.class4); }
static void Main(string[] args) { MySerializer ser = new MySerializer(); using(FileStream file = File.OpenRead("../../../Tools/nwind.proto.bin")) { DatabaseCompat db = (DatabaseCompat)ser.Deserialize(file, null, typeof(DatabaseCompat)); Console.WriteLine("Orders: {0}", db.Orders.Count); int sum = 0; foreach(OrderCompat order in db.Orders) { sum += order.Lines == null ? 0 : order.Lines.Count; } Console.WriteLine("Lines: {0}", sum); using(MemoryStream ms = new MemoryStream()) { ser.Serialize(ms, db); Console.WriteLine("Bytes: {0}", ms.Length); } } // ArrayList names = new ArrayList(); // foreach(FieldInfo field in typeof(OpCodes).GetFields()) // { // if(field.IsStatic) names.Add(field.Name); // } // names.Sort(); // foreach(string name in names) Console.WriteLine(name); }
public void CheckDeserializedClass4Values() { if (File.Exists(path)) { File.Delete(path); } Class4 class4 = new Class4("Deskorolka", true, 4.9d); class4.class4 = class4; MySerializer mySerializer = new MySerializer(); using (FileStream fsSerialize = new FileStream(path, FileMode.Create)) { mySerializer.Serialize(fsSerialize, class4); } Class4 class4Deserialized; using (FileStream fsDeserialize = new FileStream(path, FileMode.Open)) { class4Deserialized = (Class4)mySerializer.Deserialize(fsDeserialize); } Assert.AreNotSame(null, class4Deserialized); Assert.AreNotSame(class4, class4Deserialized); Assert.AreEqual(class4.Text, class4Deserialized.Text); Assert.AreEqual(class4.Number, class4Deserialized.Number); Assert.AreEqual(class4.Boolean, class4Deserialized.Boolean); }
public void WhenSerializingUnknownTypeItThrowsInvalidOperation() { AbstractSerializer.RegisterKnownType(typeof(object)); AbstractSerializer s = new MySerializer(); AssertThrows<InvalidOperationException>(() => s.Serialize(new { })); }
public void WhenSerializingUnknownTypeItThrowsInvalidOperation() { AbstractSerializer.RegisterKnownType(typeof(object)); AbstractSerializer s = new MySerializer(); AssertThrows <InvalidOperationException>(() => s.Serialize(new { })); }
// ------------ // Constructors // ------------ public RestaurantsInfo() { _myList = new List <RestaurantInfo>(); GetSerializedData(); MySerializer.Serialize(ref _myList); OutputToRRDb(); }
public void CheckStringReferencesTest() { if (File.Exists(path)) { File.Delete(path); } string stringReference = "StringReference"; Class1 class1 = new Class1(stringReference, DateTime.Now, 1.1d); Class2 class2 = new Class2(stringReference, DateTime.Now, 2.2d); Class3 class3 = new Class3(stringReference, DateTime.Now, 3.3d); class1.Class2 = class2; class1.Class3 = class3; class2.Class1 = class1; class2.Class3 = class3; class3.Class1 = class1; class3.Class2 = class2; MySerializer mySerializer = new MySerializer(); using (FileStream fsSerialize = new FileStream(path, FileMode.Create)) { mySerializer.Serialize(fsSerialize, class1); } Class1 class1Deserialized; using (FileStream fsDeserialize = new FileStream(path, FileMode.Open)) { class1Deserialized = (Class1)mySerializer.Deserialize(fsDeserialize); } Assert.AreNotSame(class1, class1Deserialized); Assert.AreNotSame(null, class1Deserialized.Class2); Assert.AreNotSame(null, class1Deserialized.Class3); Assert.AreEqual(class3.Number, class1Deserialized.Class3.Number); Assert.AreEqual(class3.DateTime.ToString(), class1Deserialized.Class3.DateTime.ToString()); Assert.AreEqual(class2.Number, class1Deserialized.Class2.Number); Assert.AreEqual(class2.DateTime.ToString(), class1Deserialized.Class2.DateTime.ToString()); Assert.AreEqual(class1.Number, class1Deserialized.Number); Assert.AreEqual(class1.DateTime.ToString(), class1Deserialized.DateTime.ToString()); Assert.IsFalse(object.ReferenceEquals(stringReference, class1Deserialized.Text)); Assert.IsTrue(object.ReferenceEquals(class1Deserialized.Text, class1Deserialized.Class2.Text)); Assert.IsTrue(object.ReferenceEquals(class1Deserialized.Text, class1Deserialized.Class3.Text)); Assert.IsTrue(object.ReferenceEquals(class1Deserialized.Class2.Text, class1Deserialized.Class3.Text)); }
public void CheckDeserializedClass3Values() { if (File.Exists(path)) { File.Delete(path); } Class1 class1 = new Class1("KLASA1", DateTime.Now, 1.1d); Class2 class2 = new Class2("KLASA2", DateTime.Now, 2.2d); Class3 class3 = new Class3("KLASA3", DateTime.Now, 3.3d); class1.Class2 = class2; class1.Class3 = class3; class2.Class1 = class1; class2.Class3 = class3; class3.Class1 = class1; class3.Class2 = class2; MySerializer mySerializer = new MySerializer(); using (FileStream fsSerialize = new FileStream(path, FileMode.Create)) { mySerializer.Serialize(fsSerialize, class3); } Class3 class3Deserialized; using (FileStream fsDeserialize = new FileStream(path, FileMode.Open)) { class3Deserialized = (Class3)mySerializer.Deserialize(fsDeserialize); } Assert.AreNotSame(class2, class3Deserialized); Assert.AreNotSame(null, class3Deserialized.Class1); Assert.AreNotSame(null, class3Deserialized.Class2); Assert.AreEqual(class1.Text, class3Deserialized.Class1.Text); Assert.AreEqual(class1.Number, class3Deserialized.Class1.Number); Assert.AreEqual(class1.DateTime.ToString(), class3Deserialized.Class1.DateTime.ToString()); Assert.AreEqual(class2.Text, class3Deserialized.Class2.Text); Assert.AreEqual(class2.Number, class3Deserialized.Class2.Number); Assert.AreEqual(class2.DateTime.ToString(), class3Deserialized.Class2.DateTime.ToString()); Assert.AreEqual(class3.Text, class3Deserialized.Text); Assert.AreEqual(class3.Number, class3Deserialized.Number); Assert.AreEqual(class3.DateTime.ToString(), class3Deserialized.DateTime.ToString()); }
public void CheckDeserializedClass1References() { if (File.Exists(path)) { File.Delete(path); } Class1 class1 = new Class1("KLASA1", DateTime.Now, 1.1d); Class2 class2 = new Class2("KLASA2", DateTime.Now, 2.2d); Class3 class3 = new Class3("KLASA3", DateTime.Now, 3.3d); class1.Class2 = class2; class1.Class3 = class3; class2.Class1 = class1; class2.Class3 = class3; class3.Class1 = class1; class3.Class2 = class2; MySerializer mySerializer = new MySerializer(); using (FileStream fsSerialize = new FileStream(path, FileMode.Create)) { mySerializer.Serialize(fsSerialize, class1); } Class1 class1Deserialized; using (FileStream fsDeserialize = new FileStream(path, FileMode.Open)) { class1Deserialized = (Class1)mySerializer.Deserialize(fsDeserialize); } Assert.AreNotSame(class1, class1Deserialized); Assert.AreNotSame(null, class1Deserialized.Class2); Assert.AreNotSame(null, class1Deserialized.Class3); Assert.AreNotSame(null, class1Deserialized.Class2.Class1); Assert.AreNotSame(null, class1Deserialized.Class2.Class3); Assert.AreNotSame(null, class1Deserialized.Class3.Class2); Assert.AreNotSame(null, class1Deserialized.Class3.Class1); Assert.AreSame(class1Deserialized, class1Deserialized.Class2.Class1); Assert.AreSame(class1Deserialized, class1Deserialized.Class3.Class1); Assert.AreSame(class1Deserialized.Class2, class1Deserialized.Class3.Class2); Assert.AreSame(class1Deserialized.Class3, class1Deserialized.Class2.Class3); }
void protobuf_ToSerialize() { #if PROTOBUF Address add = new Address(); add.Line1 = "Perking"; add.Line2 = "LaMaTemper"; Person per = new Person(); per.Address = add; per.Id = 14; per.Name = "allen"; using (FileStream fs = File.Open(DeviceInfo.PersisitFullPath("proto"), FileMode.Create)) { var ser = new MySerializer(); ser.Serialize(fs, per); } #endif }
static void Main(string[] args) { string filePath, xsdFilePath, xsltFilePath, htmlFilePath; Class1 class1Deserialized = null; DataContext dataContextDeserialized = null; Katalog katalogDeserialized = null; Console.WriteLine(" Zadanie 2 - Serializacja \r"); Console.WriteLine("-----------------------------------------\n"); Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("Custom - Graph"); Console.WriteLine("\t1 - Graph custom serialization"); Console.WriteLine("\t2 - Graph custom deserialization"); Console.WriteLine("\t3 - Show deserialized Graph object"); Console.WriteLine("JSON - Graph"); Console.WriteLine("\t4 - Graph JSON serialization"); Console.WriteLine("\t5 - Graph JSON deserialization"); Console.WriteLine("\t6 - Show deserialized JSON Graph object"); Console.WriteLine("JSON - Zadanie1"); Console.WriteLine("\t7 - DataContext JSON serialization"); Console.WriteLine("\t8 - DataContext JSON deserialization"); Console.WriteLine("\t9 - Show deserialized JSON object"); Console.WriteLine("XML - Katalog"); Console.WriteLine("\t10 - Katalog XML serialization"); Console.WriteLine("\t11 - Katalog XML deserialization"); Console.WriteLine("\t12 - Show deserialized Katalog XML object"); Console.WriteLine("\t13 - Validate XML from serialized Katalog"); Console.WriteLine("\t14 - Transform XML from serialized Katalog"); Console.WriteLine("0 - Exit"); do { Console.Write("\nYour choice: "); switch (Console.ReadLine()) { #region MySerializer graph options case "1": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (File.Exists(filePath)) { File.Delete(filePath); } Class1 class1 = new Class1("KLASA1", DateTime.Now, 1.1d); Class2 class2 = new Class2("KLASA2", DateTime.Now, 2.2d); Class3 class3 = new Class3("KLASA3", DateTime.Now, 3.3d); class1.Class2 = class2; class1.Class3 = class3; class2.Class1 = class1; class2.Class3 = class3; class3.Class1 = class1; class3.Class2 = class2; MySerializer mySerializer = new MySerializer(); using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate)) { mySerializer.Serialize(fs, class1); Console.WriteLine("> Serialization done"); } break; } case "2": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (File.Exists(filePath)) { MySerializer mySerializer = new MySerializer(); using (FileStream fsDes = new FileStream(filePath, FileMode.Open)) { try { class1Deserialized = (Class1)mySerializer.Deserialize(fsDes); Console.WriteLine("> Deserialization done"); } catch (Exception e) { class1Deserialized = null; Console.WriteLine(e.Message); } } } else { Console.WriteLine("> Given filePath does not exist"); } break; } case "3": { if (class1Deserialized == null) { Console.WriteLine("> You should deserialize the class first"); } else { Console.WriteLine(class1Deserialized.ToString()); } break; } #endregion #region JsonSerializer graph options case "4": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (File.Exists(filePath)) { File.Delete(filePath); } Class1 class1 = new Class1("KLASA1", new DateTime(2011, 1, 1, 1, 1, 1), 1.1d); Class2 class2 = new Class2("KLASA2", new DateTime(2022, 2, 2, 2, 2, 2), 2.2d); Class3 class3 = new Class3("KLASA3", new DateTime(2033, 3, 3, 3, 3, 3), 3.3d); class1.Class2 = class2; class1.Class3 = class3; class2.Class1 = class1; class2.Class3 = class3; class3.Class1 = class1; class3.Class2 = class2; JsonSerializer.Serialize(class1, filePath); Console.WriteLine("> Serialization done"); break; } case "5": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (File.Exists(filePath)) { try { class1Deserialized = (Class1)JsonSerializer.Deserialize <Class1>(filePath); Console.WriteLine("> Deserialization done"); } catch (Exception e) { class1Deserialized = null; Console.WriteLine(e.Message); } } else { Console.WriteLine("> Given filePath does not exist"); } break; } case "6": { if (class1Deserialized == null) { Console.WriteLine("> You should deserialize the class first"); } else { Console.WriteLine(class1Deserialized.ToString()); } break; } #endregion #region JsonSerializer zadanie1 options case "7": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (File.Exists(filePath)) { File.Delete(filePath); } DataContext dataContext = new DataContext(); IDataFiller dataFiller = new ConstDataFiller(); dataFiller.Fill(dataContext); JsonSerializer.Serialize(dataContext, filePath); Console.WriteLine("> Serialization done"); break; } case "8": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (File.Exists(filePath)) { try { dataContextDeserialized = (DataContext)JsonSerializer.Deserialize <DataContext>(filePath); Console.WriteLine("> Deserialization done"); } catch (Exception e) { dataContextDeserialized = null; Console.WriteLine(e.Message); } } else { Console.WriteLine("> Given filePath does not exist"); } break; } case "9": { if (dataContextDeserialized == null) { Console.WriteLine("> You should deserialize the class first"); } else { Console.WriteLine(dataContextDeserialized.ToString()); } break; } #endregion #region XML Katalog options case "10": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (!filePath.Contains("\\")) { filePath = ".\\XmlModel\\" + filePath; } if (File.Exists(filePath)) { File.Delete(filePath); } Katalog katalog = new Katalog(); IXmlDataFiller xmlFiller = new ConstXmlDataFiller(); xmlFiller.Fill(katalog); XmlSerialization.Serialize(katalog, filePath, "Katalog.xslt"); Console.WriteLine("> Serialization done"); break; } case "11": { Console.Write("Enter file path: "); filePath = Console.ReadLine(); if (!filePath.Contains("\\")) { filePath = ".\\XmlModel\\" + filePath; } if (File.Exists(filePath)) { try { katalogDeserialized = XmlSerialization.Deserialize <Katalog>(filePath); Console.WriteLine("> Deserialization done"); } catch (Exception e) { katalogDeserialized = null; Console.WriteLine(e.Message); } } else { Console.WriteLine("> Given filePath does not exist"); } break; } case "12": { if (katalogDeserialized == null) { Console.WriteLine("> You should deserialize the class first"); } else { Console.WriteLine(katalogDeserialized.ToString()); } break; } case "13": { Console.Write("Enter xml file path: "); filePath = Console.ReadLine(); if (!filePath.Contains("\\")) { filePath = ".\\XmlModel\\" + filePath; } Console.Write("Enter xsd file path: "); xsdFilePath = Console.ReadLine(); if (!xsdFilePath.Contains("\\")) { xsdFilePath = ".\\XmlModel\\" + xsdFilePath; } try { XmlSerialization.ValidateXml(xsdFilePath, filePath); Console.WriteLine("Validation successful"); } catch (XmlSchemaValidationException e) { Console.WriteLine(e.Message); } catch (FileLoadException e) { Console.WriteLine(e.Message); } break; } case "14": { Console.Write("Enter xml file path: "); filePath = Console.ReadLine(); if (!filePath.Contains("\\")) { filePath = ".\\XmlModel\\" + filePath; } Console.Write("Enter xslt file path: "); xsltFilePath = Console.ReadLine(); if (!xsltFilePath.Contains("\\")) { xsltFilePath = ".\\XmlModel\\" + xsltFilePath; } Console.Write("Enter result file path: "); htmlFilePath = Console.ReadLine(); if (!htmlFilePath.Contains("\\")) { htmlFilePath = ".\\XmlModel\\" + htmlFilePath; } try { XmlSerialization.XsltTransform(xsltFilePath, filePath, htmlFilePath); Console.WriteLine("Transformation successful"); } catch (Exception e) { Console.WriteLine(e.Message); } break; } #endregion #region Options handling case "0": { Environment.Exit(0); break; } default: { Console.WriteLine("> Unknown option"); break; } #endregion } } while (true); }
public void WhenNoTypesAreRegisteredInSerializerItThrowsOnSerialization() { AbstractSerializer s = new MySerializer(); AssertThrows <InvalidOperationException>(() => s.Serialize(new { })); }
private void Serialize(MemoryStream ms, ProtoMessage msg) { m_Serializer.Serialize(ms, msg); }
public void WhenNoTypesAreRegisteredInSerializerItThrowsOnSerialization() { AbstractSerializer s = new MySerializer(); AssertThrows<InvalidOperationException>(() => s.Serialize(new { })); }
static void Main(string[] args) { MySerializer serializer = new MySerializer(); Console.WriteLine("Available operations: "); Console.WriteLine( "[0] Serialize graph \n[1] Deserialize graph\n" + "[2] Serialize list \n[3] Deserialize list\n" + "[4] Serialize graph to JSON\n[5] Deserialize graph from JSON\n" + "[6] Validate JSON (List)\n[7] Serialize List to JSON\n[8] Deserialize List from JSON\n[9] Exit"); int choice = 0; Class1 class1 = new Class1("Text", DateTime.Now, 5.5); Class2 class2 = new Class2("Text2", DateTime.Now); Class3 class3 = new Class3("Text3", DateTime.Now); class1.Class2 = class2; class1.Class3 = class3; class3.Class1 = class1; class3.Class2 = class2; class2.Class1 = class1; class2.Class3 = class3; List <Document> documents = new List <Document> { new Document(123, "342"), new Document(23, "sdsd") }; DocumentBinder binder = new DocumentBinder(documents, new Alias[] { new Alias("A1"), new Alias("A2") }); while (choice != 10) { choice = Console.Read() - '0'; switch (choice) { case 0: using (FileStream fileStream = new FileStream("serializationGraph.txt", FileMode.Create)) { serializer.Serialize(fileStream, class1); Console.WriteLine("Object serialized"); Console.WriteLine("Path: " + Directory.GetCurrentDirectory()); } break; case 1: using (FileStream fileStream = new FileStream("serializationGraph.txt", FileMode.Open)) { serializer.Deserialize(fileStream); Console.WriteLine("Object deserialized"); } break; case 2: using (FileStream fileStream = new FileStream("serializationList.txt", FileMode.Create)) { serializer.Serialize(fileStream, binder); Console.WriteLine("Object serialized"); Console.WriteLine("Path: " + Directory.GetCurrentDirectory()); } break; case 3: using (FileStream fileStream = new FileStream("serializationList.txt", FileMode.Open)) { serializer.Deserialize(fileStream); Console.WriteLine("Object deserialized"); } break; case 4: using (FileStream fileStream = new FileStream("serializationGraph.json", FileMode.Create)) { JsonSerializer.Serialize(fileStream, class1); Console.WriteLine("Object serialized"); Console.WriteLine("Path: " + Directory.GetCurrentDirectory()); } break; case 5: using (FileStream fileStream = new FileStream("serializationGraph.json", FileMode.Open)) { Class1 deserialize = JsonSerializer.Deserialize <Class1>(fileStream); Console.WriteLine("Object deserialized"); } break; case 6: using (FileStream fileStream = new FileStream("serializationList.json", FileMode.Open)) { string json; using (StreamReader reader = new StreamReader(fileStream)) { json = reader.ReadToEnd(); } JSchemaGenerator generator = new JSchemaGenerator(); Console.WriteLine(JsonSerializer.Validate(generator.Generate(typeof(DocumentBinder)), json) ? "Valid" : "InValid"); } break; case 7: using (FileStream fileStream = new FileStream("serializationList.json", FileMode.Create)) { JsonSerializer.Serialize(fileStream, binder); Console.WriteLine("Object serialized"); Console.WriteLine("Path: " + Directory.GetCurrentDirectory()); } break; case 8: using (FileStream fileStream = new FileStream("serializationList.json", FileMode.Open)) { DocumentBinder deserialize = JsonSerializer.Deserialize <DocumentBinder>(fileStream); Console.WriteLine("Object deserialized"); } break; case 9: Environment.Exit(0); break; } } }
private async void ReadProto(Button button) { var path = @"nwind.proto.bin"; var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; var file = await folder.GetFileAsync(path); var readStream = await file.OpenReadAsync(); IInputStream inputSteam = readStream.GetInputStreamAt(0); DataReader dataReader = new DataReader(inputSteam); uint numBytesLoaded = await dataReader.LoadAsync((uint)readStream.Size); byte[] raw = new byte[readStream.Size]; dataReader.ReadBytes(raw); var ms = new MemoryStream(raw); var ser = new MySerializer(); var dal = (DAL.DatabaseCompat)ser.Deserialize(ms, null, typeof(DAL.DatabaseCompat)); StringBuilder perfStats = new StringBuilder(); perfStats.AppendLine(".NET for Metro style apps"); perfStats.AppendFormat("{0} orders from NWind", dal.Orders.Count).AppendLine(); var dcs = new DataContractSerializer(typeof(DAL.DatabaseCompat)); var xs = new XmlSerializer(typeof(DAL.DatabaseCompat)); using (var buffer = new MemoryStream()) { const int loop = 50; var watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); dcs.WriteObject(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("DataContractSerializer:").AppendFormat("WriteObject x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; dcs.ReadObject(buffer); } watch.Stop(); perfStats.AppendLine().AppendFormat("ReadObject x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); xs.Serialize(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("XmlSerializer:").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; xs.Deserialize(buffer); } watch.Stop(); perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); ser.Serialize(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("protobuf-net").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; ser.Deserialize(buffer, null, typeof(DAL.DatabaseCompat)); } watch.Stop(); perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); Serializer.Serialize(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("protobuf-net (runtime)").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; Serializer.Deserialize<DAL.DatabaseCompat>(buffer); } watch.Stop(); perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); } button.Content = perfStats.ToString(); // test SM2Stats bool isSer = ser.CanSerializeContractType(typeof(SM2Stats)); SM2Stats stats = new SM2Stats { acqreps = 1, difficultyhistory = { new DiffHistPair { date = 123, values = { 3.4f }} } }; var clone = (SM2Stats)ser.DeepClone(stats); // checked by eye; is the same }
private async void ReadProto(Button button) { var path = @"nwind.proto.bin"; var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; var file = await folder.GetFileAsync(path); var readStream = await file.OpenReadAsync(); IInputStream inputSteam = readStream.GetInputStreamAt(0); DataReader dataReader = new DataReader(inputSteam); uint numBytesLoaded = await dataReader.LoadAsync((uint)readStream.Size); byte[] raw = new byte[readStream.Size]; dataReader.ReadBytes(raw); var ms = new MemoryStream(raw); var ser = new MySerializer(); var dal = (DAL.DatabaseCompat)ser.Deserialize(ms, null, typeof(DAL.DatabaseCompat)); StringBuilder perfStats = new StringBuilder(); perfStats.AppendLine(".NET for Metro style apps"); perfStats.AppendFormat("{0} orders from NWind", dal.Orders.Count).AppendLine(); var dcs = new DataContractSerializer(typeof(DAL.DatabaseCompat)); var xs = new XmlSerializer(typeof(DAL.DatabaseCompat)); using (var buffer = new MemoryStream()) { const int loop = 50; var watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); dcs.WriteObject(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("DataContractSerializer:").AppendFormat("WriteObject x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; dcs.ReadObject(buffer); } watch.Stop(); perfStats.AppendLine().AppendFormat("ReadObject x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); xs.Serialize(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("XmlSerializer:").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; xs.Deserialize(buffer); } watch.Stop(); perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); ser.Serialize(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("protobuf-net").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; ser.Deserialize(buffer, null, typeof(DAL.DatabaseCompat)); } watch.Stop(); perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.SetLength(0); Serializer.Serialize(buffer, dal); } watch.Stop(); perfStats.AppendLine().AppendLine().AppendLine("protobuf-net (runtime)").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length); watch = Stopwatch.StartNew(); for (int i = 0; i < loop; i++) { buffer.Position = 0; Serializer.Deserialize <DAL.DatabaseCompat>(buffer); } watch.Stop(); perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds); } button.Content = perfStats.ToString(); // test SM2Stats bool isSer = ser.CanSerializeContractType(typeof(SM2Stats)); SM2Stats stats = new SM2Stats { acqreps = 1, difficultyhistory = { new DiffHistPair { date = 123, values ={ 3.4f } } } }; var clone = (SM2Stats)ser.DeepClone(stats); // checked by eye; is the same }