Here's an example for you that does binary serialization of a DataSet, compressing the serialized stream on the fly. On my system, the uncompressed XML from the DataSet is 31,253 bytes, the uncompressed binary version of the dataset is 30,804 bytes, and the compressed binary version is 3,841 bytes.
using System; using System.IO; using System.Data; using System.Data.SqlClient; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using NZlib.GZip; class Class1 { [STAThread] static void Main(string[] args) { SqlConnection myConnection = new SqlConnection("server=localhost;trusted_connection=yes;database=Northwin d"); SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT * FROM Products", myConnection); DataSet ds = new DataSet(); myAdapter.Fill(ds); Console.WriteLine("DataSet rows: {0}, cols: {1}", ds.Tables[0].Rows.Count, ds.Tables[0].Columns.Count); StreamWriter xmlOut = File.CreateText("products.xml"); xmlOut.Write(ds.GetXml()); xmlOut.Close(); Console.WriteLine("XML file size: {0:n} bytes", new FileInfo("products.xml").Length); IFormatter formatter = new BinaryFormatter(); Stream output = new GZipOutputStream(File.Create("products.bin.gz")); formatter.Serialize(output, ds); output.Close(); Console.WriteLine("Compressed binary file size: {0:n} bytes", new FileInfo("products.bin.gz").Length); } } > -----Original Message----- > From: dotnet discussion [mailto:[EMAIL PROTECTED]] > On Behalf Of franklin gray > Sent: Thursday, May 02, 2002 2:02 PM > To: [EMAIL PROTECTED] > Subject: Re: [DOTNET] HTTP Compression of XML WebServices > > > oh....well that makes things a little different. I guess I > should have asked about that sooner:-( Thanks for the info. > It might come in very handy. I am still playing with the > binary serializtion of a Dataset because I have noticed that > for large datasets, it can take a while to create the dataset > from xml. Does anybody have an example of a binary > serialization of a dataset avaiable? > > -----Original Message----- > From: Marsh, Drew [mailto:[EMAIL PROTECTED]] > Sent: Thursday, May 02, 2002 1:44 PM > To: [EMAIL PROTECTED] > Subject: Re: [DOTNET] HTTP Compression of XML WebServices > > > franklin gray [mailto:[EMAIL PROTECTED]] wrote: > > > by doing this binary serialization of a dataset, would it > be the same > > dataset? I too do it the way Robert does, by getting the xml and > > re-creating it on the client after decryption and > decompression. The > > problem I have is that I loose the row state. IE...If > change two rows > > on the client, send the ds xml back to the server, then > recreate the > > DS on the server, I will not have two rows in the Getchanges > > method, I will have a row for every row as an addded row. > > Would Binary serialization would solve this problem? > > Are you using WriteXml or GetXml? If you need to maintain > rowstate you need to use WriteXml with XmlWriteMode.DiffGram. > If you want to only serialize the *changes*, then you should > call GetChanges and WriteXml the resulting DataSet as a DiffGram. > > HTH, > Drew > > You can read messages from the DOTNET archive, unsubscribe > from DOTNET, or subscribe to other DevelopMentor lists at > http://discuss.develop.com. > > You can read messages from the > DOTNET archive, unsubscribe from DOTNET, or subscribe to > other DevelopMentor lists at http://discuss.develop.com. > > You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.