Я реализовал предлагаемое решение выше. После реализации, я нашел эту ссылку:
http://msdn.microsoft.com/en-us/library/ms752244.aspx
Затем я реализовал бинарный писатель, как показано ниже.
Сервис Метод:
[OperationContract]
public Stream GetAllLocationsDataStream(string customerId)
{
Stream stream = new MemoryStream();
try
{
Customer customer = ServiceEquipmentManager.GetCustomerAllLocations(customerId);
DataContractSerializer serializer = new DataContractSerializer(typeof(Customer));
XmlDictionaryWriter binaryDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(stream);
serializer.WriteObject(binaryDictionaryWriter, customer);
binaryDictionaryWriter.Flush();
}
catch (Exception ex)
{
string timestamp;
ExceptionHelper.HandleExceptionWrapper(ex, "Log Only", out timestamp);
}
stream.Position = 0;
return stream;
}
стороне клиента Завершено событие:
XmlDictionaryReader binaryDictionaryReader = XmlDictionaryReader.CreateBinaryReader(new MemoryStream(e.Argument as byte[]), XmlDictionaryReaderQuotas.Max);
Customer customer = serializer.ReadObject(binaryDictionaryReader) as Customer;
Я проверил разницу моего объекта, как показано в приведенной выше ссылке, мои результаты приведены ниже:
Текст = 68,866,216 байт
Бинарные = 49,207,475 байт (28,5% меньше, чем текст)
Спасибо, это решение сработало для меня! Просто и очень быстро! Я едва мог загрузить ~ 300 предметов раньше, и теперь я загружаю ~ 4000 предметов! За меньшее время! –