WCF отправляет большие файлы - PullRequest
1 голос
/ 15 ноября 2009

Я пишу сервис 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;
  }
}

Ответы [ 2 ]

6 голосов
/ 15 ноября 2009

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

[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 голос
/ 15 ноября 2009

Способ сделать это - использовать потоковую передачу, см .:

http://msdn.microsoft.com/en-us/library/ms731913.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...