2009-11-15 43 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

馬克