2009-11-15 39 views
1

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

我该如何做到这一点?

我写了这个:

[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; 
    } 
} 
+0

什么样的处理?内存中文件有多大? 3 MB mp3文件可以在内存中为70 MB。 – Dani 2009-11-15 15:12:44

回答

6

看一看WCF message streaming - 基本上你创建一个参数类型“流” - 和可选的返回值作为“流”,以及 - 然后你不不得不缓冲整个数兆字节的文件,但是您将以流式传输块传输文件。

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

MSDN文档是在这里:http://msdn.microsoft.com/en-us/library/ms731913.aspx

马克