WCF: сериализация? Streaming? - PullRequest
4 голосов
/ 20 сентября 2010

Мне нужно понять, как работает WCF при отправке сообщения. WCF сериализует все перед отправкой?

Мой другой вопрос: какая выгода от использования потоковой передачи? Это лучше для больших сообщений, скажем, от 1 МБ до 2 МБ? Можно ли отправить сериализованный сложный объект, а затем можно легко десериализовать его на другой стороне после потоковой передачи (под сложным объектом я имею в виду список изображений, которые могут быть динамическими), или мне нужно отформатировать его, используя что-то вроде XML?

Основная проблема заключается в том, что я не знаю, нужно ли при использовании потоковой передачи WFC сначала сериализовать сообщение перед отправкой ... разве WFC не должен сериализовать все перед отправкой?

Я знаю, что это очень общее, но мне нужно уточнить эти понятия.

Приветствия

1 Ответ

0 голосов
/ 20 сентября 2010
  1. Да, кроме потоков.
  2. Потоковая передача позволяет вам реализовать то, что обычно было бы трудно или невозможно. Например, если вы попытаетесь отправить 500 МБ, используя HTTP-привязку, это будет невозможно. Но используя потоковую передачу, вы получаете указатель на поток и можете читать из потока.
  3. Похоже, что вы имеете в виду подход с буферизацией, а не потоковую передачу. Да, вы можете установить его в буфер и предпочтительнее для больших сообщений.
  4. Да, вы можете передавать поток в буфер и затем использовать собственную сериализацию для десериализации.
  5. При потоковой передаче вы отправляете поток и позволяете другой стороне читать его, сериализация не требуется. Например:

    интерфейс IMyService { Stream GetMyFile (Guid fileId); }

и

class MyService : IMyService
{
  Stream GetMyFile(Guid fileId)

     {
        return new FileStream(GetFileNameFromId(fileId), ...);    
     }

}
...