I think that returning dataset or datatable is not good in real time because most of the times we use serializability to transmit the data. And collections are best suitable for this.
Using dataset or datable will create extra burden.
Also in some cases dataset can be strongly typed and you can define them ahead of time.
Before sending data across platforms/network, it is advisable for them to be serialized and even encrypted for secure reasons into some sort of formats, and XML seems most promising for large chunks of data.