J'ai mis en œuvre la solution suggérée ci-dessus. Après la mise en œuvre, j'ai trouvé ce lien:
http://msdn.microsoft.com/en-us/library/ms752244.aspx
Je puis mis en œuvre l'écrivain binaire, comme indiqué ci-dessous.
service Méthode:
[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;
}
côté client Terminé l'événement:
XmlDictionaryReader binaryDictionaryReader = XmlDictionaryReader.CreateBinaryReader(new MemoryStream(e.Argument as byte[]), XmlDictionaryReaderQuotas.Max);
Customer customer = serializer.ReadObject(binaryDictionaryReader) as Customer;
J'ai vérifié la différence de mon objet, comme indiqué dans le lien ci-dessus, mes résultats sont présentés ci-dessous:
Texte = 68,866,216 octets
binaires = 49,207,475 octets (28,5%) moins de texte
Merci, cette solution a fonctionné pour moi! Simple et très rapide! J'étais à peine capable de charger ~ 300 articles avant, et maintenant je charge ~ 4000 articles! En moins de temps !! –