我正在编写一个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;
}
}
答案 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)
执行此操作的方法是使用流媒体,请参阅: