WCF发送大文件

时间:2009-11-15 15:02:01

标签: c# .net wcf

我正在编写一个WCF服务,用于接收大文件(mp3文件和其他文件),处理它们然后返回一个mp3音频文件。我不想将这些文件保存在文件系统中,我只想处理它们,然后返回一个音频文件。问题是我希望使用尽可能低内存的过程。

我将如何做到这一点?

我写了这个:

[ServiceContract]
public interface IService
{
    [FaultContract(typeof(ConversionFault))]
    [OperationContract]
    byte[] ProcessAudio(byte[] audio,string filename);
}

public class MyService : IService
{
  public byte[] ProcessAudio(byte[] audio,string filename)
  {
        //...
        //do the processing here.

        //return the converted audio.
        return processedAudio;
  }
}

2 个答案:

答案 0 :(得分:6)

看看WCF message streaming - 您基本上创建一个参数作为“Stream”类型 - 并且可选地将返回值作为“Stream” - 然后您不必缓冲整个多个兆字节文件,但您将以流式块传输文件。

[ServiceContract]
public interface IService
{
    [FaultContract(typeof(ConversionFault))]
    [OperationContract]
    Stream ProcessAudio(Stream audio, string filename);
}

MSDN文档位于:http://msdn.microsoft.com/en-us/library/ms731913.aspx

马克

答案 1 :(得分:1)

执行此操作的方法是使用流媒体,请参阅:

http://msdn.microsoft.com/en-us/library/ms731913.aspx