Веб-служба WCF: загрузка файла, обработка этого файла, загрузка этого обработанного файла обратно - PullRequest
3 голосов
/ 21 ноября 2008

Я могу обработать процесс в этой части файла, но перед тем, как я сойду с ума, кто-нибудь создал простой сервис и клиент wcf (работающий под службами Windows или IIS), который я могу использовать для загрузки файла и его загрузки обратно? с наименьшим количеством строк кода? (C # или VB)

сжатие и шифрование было бы круто, но я расскажу об этом позже !!

Спасибо !!

Ответы [ 3 ]

3 голосов
/ 11 августа 2010

В зависимости от того, сколько времени занимает обработка, вам лучше использовать два метода, чтобы избежать проблем с тайм-аутом.

Кроме того, я согласен с Игорем, вы должны использовать потоки, а не байты []. В противном случае вы, вероятно, столкнетесь с исключениями OutOfMemory.

[ServiceContract]
public interface IFileService
{
  // returns a Guid which you can use later to request the processed files
  [OperationContract]
  Guid SendFileToProcess(stream streamedFile);

  [OperationContract]
  Stream GetProcessedFile(Guid fileId);

  // use this to poll whether the service has finished processing
  [OperationContract]
  bool IsFileProcessed(Guid fileId);
}
2 голосов
/ 22 ноября 2008

Вы должны быть в состоянии сделать это довольно легко. Сервисный контракт, вероятно, будет выглядеть так:

[ServiceContract]
public interface IFileService
{
  [OperationContract]
  byte[] ProcessFile(byte[] FileData);
}

Часть шифрования может быть обработана WCF с использованием безопасности на транспортном уровне. Я не верю, что WCF поддерживает сжатие напрямую, но вы можете добавить это с помощью класса GZipStream.

Я не создал службу обработки файлов, как вы описываете, но я создал службу, которая обрабатывает данные байтового массива, которые передаются между клиентом WCF и службой и обратно. Работает просто отлично.

0 голосов
/ 04 февраля 2010

Использовать транспорт WCF в потоковом режиме или / и длительно действующий шаблон объекта. Пожалуйста, следуйте этой статье для более подробной информации или свяжитесь со мной.

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