We are currently trying to move large amounts of data to a Silverlight 3 client using WCF with PollingDuplex. I have read about the MultiplerMessagesPerPoll in Silverlight 4 and it appears to be quite a bit faster. Are there any examples out there for me to reference (using MultipleMessagesPerPoll)? Or maybe some good references on using Net.TCP? Maybe I should be taking a completely different approach? Any ideas or suggestions would be greatly appreciated.
Thanks!
Streaming serialized response chunks works well:
Your WCF binding configuration would resemble the following:
<binding name="myCustomBinding">
<binaryMessageEncoding />
<httpTransport transferMode="StreamedResponse"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" />
</binding>
Your Service method would look something like:
[OperationContract]
public Stream GetDataStream(string objectId)
{
Stream stream = new MemoryStream();
MyObject obj = Manager.GetObject(objectId);
DataContractSerializer serilizer = new DataContractSerializer(typeof(MyObject));
serilizer.WriteObject(stream, obj);
stream.Position = 0;
return stream;
}
And your client-side completed method would do something like:
static void client_GetDataStreamCompleted(object sender, GetDataStreamCompletedEventArgs e)
{
if (e.Error == null)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(MyObject));
MyObject obj = serializer.ReadObject(new MemoryStream(e.Result)) as MyObject;
}
}