Я бы загрузил весь большой двоичный объект в поток памяти, а затем разрешил WCF обрабатывать потоковую передачу и разбиение на блоки Вы можете включить потоковую передачу в transportBindings или изучить использование MTOM.
[ServiceContract]
public class ContentService
{
[OperationContract]
public Stream GetBlob(int id)
{
byte[] myBlob = GetBytesFromDatabase();
return new MemoryStream(myBlob);
}
}
Если вы используете SQL Server 2008, попробуйте отправить поток напрямую клиенту WCF
[ServiceContract]
public class ContentService
{
[OperationContract]
public Stream GetBlob(int id)
{
return GetStreamFromDatabase(id);
}
}
См. Эту ссылку на Потоковые сообщения с WCF