2009-11-15 3 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 МБ mp3-файл может быть 70 МБ в памяти. – Dani

ответ

6

Посмотрите на WCF message streaming - вы в основном создать один параметр, как типа «Поток» - и, возможно, возвращаемое значение как «поток», а также - и тогда вы не» t должен буферизовать весь файл с несколькими мегабайтами, но вы будете передавать файл в потоковых фрагментах.

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

MSDN документы здесь: http://msdn.microsoft.com/en-us/library/ms731913.aspx

Марк

Смежные вопросы