2016-06-22 3 views
5

Мне нужно закодировать видео с помощью ffmpeg в службе Service Fabric, когда я получаю новое сообщение из очереди служебной шины. Я могу извлечь файл ffmpeg.exe из ресурсов и запустить его, но могу ли я сохранить входные/выходные видеофайлы во внутренней файловой системе?Доступ к файловой системе в Service Fabric

ответ

5

Я испытал его на локальном кластере с помощью следующего кода:

protected override async Task RunAsync(CancellationToken cancellationToken) 
    { 
     while (true) 
     { 
      cancellationToken.ThrowIfCancellationRequested(); 

      string filename = "testFile.txt"; 
      File.AppendAllText(filename, "test. "); 

      string content = File.ReadAllText(filename); 
      System.Diagnostics.Trace.WriteLine("Content:" + content); 
      System.Diagnostics.Trace.WriteLine(new FileInfo(filename).FullName); 

      await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken); 
     } 
    } 

Выходной результат был:

Content:test. 
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt 
Content:test. test. 
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt 
Content:test. test. test. 
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt 

Но путь был изменен при следующем запуске в C: \ SfDevCluster \ Data_App_Node_3 \ SampleAppType_App52 \ работа \ testfile.txt.

Поэтому я полагаю, что ответ:

Можно использовать локальную файловую систему, но только для временных файлов. И я думаю, что это хорошая практика для очистки системы в конце итерации.

+2

Ваш вывод верен. Временное локальное хранилище файлов находится в той мере, в какой вы хотите использовать локальную файловую систему, поскольку службы не привязаны к какому-либо конкретному экземпляру виртуальной машины. –

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