WCF:序列化?流传输?

4
我需要了解WCF在发送消息时的工作原理。在发送之前,WCF是否会对所有内容进行序列化?
我的另一个问题是使用流式传输的好处是什么?对于较大的消息(比如1MB到2MB之间),它是否更好?我能否将一个复杂对象序列化后通过流式传输发送,然后在接收端轻松地反序列化它(所谓的复杂对象是指可以动态变化的图像列表),或者我需要使用类似XML的格式进行格式化?
主要问题在于我不知道在使用WCF流式传输时,是否需要先对消息进行序列化...难道WCF不应该在发送之前对所有内容进行序列化吗?
我知道这些问题很笼统,但我需要澄清这些概念。
干杯
1个回答

0
  1. 是的,除了流之外。
  2. 流允许您实现通常难以或不可能实现的功能。例如,如果您尝试使用HTTP绑定发送500MB,则这将是不可能的。但是使用流,您可以获得指向流的指针,并且可以从流中读取。
  3. 看起来您提到的是缓冲区方法而不是流。是的,您可以将其设置为缓冲区,并且对于大型消息而言,这是首选。
  4. 是的,您可以流式传输缓冲区,然后使用自己的序列化进行反序列化。
  5. 在流式传输中,您发送一个流并允许另一方从中读取,无需序列化。例如:

    interface IMyService { Stream GetMyFile(Guid fileId); }

class MyService : IMyService
{
  Stream GetMyFile(Guid fileId)

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

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接