Существует важный шаг для экономии места:
ds.RemotingFormat = SerializationFormat.Binary;
В противном случае он внутренне использует xml, даже через BinaryFormatter
.Имея это в виду, вы также можете включить gzip, но выигрыш не будет вполне значительным.Так получилось, что у меня есть статистика для сравнения здесь ;скопировать эти данные в:
DataTable (xml) (vanilla) 2269ms/6039ms
64,150,771 bytes
DataTable (xml) (gzip) 4881ms/6714ms
7,136,821 bytes
DataTable (xml) (deflate) 4475ms/6351ms
7,136,803 bytes
BinaryFormatter (rf:binary) (vanilla) 2006ms/3366ms
11,272,592 bytes
BinaryFormatter (rf:binary) (gzip) 3332ms/4267ms
8,265,057 bytes
BinaryFormatter (rf:binary) (deflate) 3216ms/4130ms
Но: DataSet
- это , а не - это очень WCF-способ ведения дел.Я бы добавил стандартные классы ОО и поменял сериализатор на что-то вроде protobuf-net , которое на значительно меньше , чем DataContractSerializer
или NetDataContractSerializer
.