Потоковая передача файлов WCF - проблема синхронизации - PullRequest
1 голос
/ 31 января 2011

Я реализовал службу WCF в потоковом режиме для передачи больших файлов через Интернет.

Пока все хорошо.

В целях статистики я хочу записать, сколько времени занимает перевод и какой размер был передан. Размер не имеет значения, но отслеживание времени передачи немного сложнее.

Для моих нужд я реализовал класс DownloadStream, производный от MemoryStream. Этот класс имеет два события: первое запускается при начале чтения, а второе при завершении чтения. Работает нормально. http://www.danflash.com/files/code/DownloadStream.txt

Но если клиент (клиент WCF) вызывает метод WCF для получения потока, происходит странная вещь. На стороне клиента я получаю ссылку на поток и могу читать из нее последовательно. Это означает, что я могу взять время перед чтением из потока и после него и получить длительность передачи.

Но если я попытаюсь сделать это на стороне сервера, весь поток будет прочитан автоматически, прежде чем любой клиент начнет чтение с него. Похоже, что содержимое потока будет скопировано в память.

Есть ли способ отследить время передачи на стороне сервера?

1 Ответ

0 голосов
/ 31 января 2011

Полезная нагрузка , как правило, , буферизованная в памяти перед началом передачи, чтобы разрешить отправку правильных заголовков содержимого, всю полезную нагрузку, подлежащую проверке, полезную нагрузку зашифрованную (если шифрование сообщениявключен, он применяется до отправки полезной нагрузки, в отличие от транспортного шифрования, которое может быть передано в потоковом режиме), для применения таких преобразований, как MTOM (что происходит после создания полезной нагрузки), и для обеспечения квот.

Вы можетебыть в состоянии рассчитать это лучше с WCF инспектором .

...