This (partly based on an earlier question ) sounds like a bandwidth issue; I would seriously think about trying a protobuff network; the protocol buffer format developed by Google is very efficient ( much larger than the default DataContractSerializer), and it can be very conveniently used from .NET. Ideal for bandwidth related scenarios. The only glitch is that WCF hooks currently do not work with Silverlight (so you cannot just add an attribute / configuration record), but you can easily pass data as byte[](just return byte[]from the method).
For example; if you have an entry like:
[ProtoContract]
public class MyRecord {
[ProtoMember(1)]
public int Id {get;set;}
[ProtoMember(2)]
public string Description {get;set;}
}
a List<MyRecord>, :
byte[] result;
using(MemoryStream ms = new MemoryStream()) {
Serializer.Serialize(ms, list);
result = ms.ToArray();
}
, - Stream ( byte[])), , , MTOM (: MTOM, , ).