2009-11-15 7 views
1

큰 파일 (mp3 파일 및 기타)을 수신하고 처리 한 다음 mp3 오디오 파일을 반환하는 데 사용되는 WCF 서비스를 작성하고 있습니다. 그 파일들을 파일 시스템에 저장하고 싶지는 않습니다. 단지 파일을 처리하고 오디오 파일을 반환하고 싶습니다. 문제는 가능한 한 낮은 메모리로 프로세스를 사용하고 싶습니다.큰 파일을 보내는 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

어떤 종류의 처리의를? 파일이 메모리에있을 때 얼마나 큰가요? 3MB mp3 파일은 70MB의 메모리가 될 수 있습니다. – Dani

답변

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

마크

관련 문제