Как вернуть структуру, содержащую двоичные данные из службы WCF REST? - PullRequest
0 голосов
/ 19 января 2011

Мне нужно реализовать следующий сценарий:

  • клиент отправляет запрос службе REST WCF, предоставляя набор параметров и двоичный файл для обработки
  • , которую получает службафайл, обрабатывает его и создает результирующий двоичный файл
  • служба должна вернуть некоторую структуру, которая содержит статус обработки «успех / сбой», сообщение об ошибке, если таковое имеется, и, если ошибки не было, - результатfile

В сервисе SOAP я бы просто возвратил что-то вроде следующего:

class ProcessingResult {
public:
    bool IsFailed;
    string ErrorMessage;
    byte[] ResultData;
};

, и промежуточное ПО должным образом сериализовало бы это по проводам, затем прокси клиентапарсинг WSDL) десериализовал бы его, и клиент был бы счастлив.

Как мне описать нечто подобное в службе REST WCF?

1 Ответ

2 голосов
/ 20 января 2011

Вы можете сделать то же самое в службе REST.Вот контракт на обслуживание:

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebInvoke(Method = "POST")]
    ProcessingResult ProcessData(byte[] data);
}

public class ProcessingResult
{
    public bool IsFailed { get; set; }
    public string ErrorMessage { get; set; }
    public byte[] ResultData { get; set; }
}

Все байтовые массивы будут отправлены в виде строки в кодировке base64.Пример сообщения запроса:

<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">QmFzZSA2NCBTdHJlYW0=</base64Binary>

Пример сообщения ответа:

<ProcessingResult xmlns="http://schemas.datacontract.org/2004/07/RestService">
  <ErrorMessage>String content</ErrorMessage>
  <IsFailed>true</IsFailed>
  <ResultData>QmFzZSA2NCBTdHJlYW0=</ResultData>
</ProcessingResult>
...