2011-01-19 59 views
0

我要實現以下情形:如何從WCF REST服務返回包含二進制數據的結構?

  • 客戶端發送到WCF REST服務提供一組參數和二進制文件的請求來處理
  • 服務獲取文件,處理它併產生結果二進制文件
  • 服務必須返回一個包含一些結構「成功/失敗」處理狀態,如果任何一個錯誤信息,如果沒有錯誤 - 結果文件

在SOAP服務我只是ret甕類似如下:

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

和中間件將正確序列化此通過電線,然後在客戶端代理(通過解析WSDL生產)將反序列化和客戶端會很高興。

如何在WCF REST服務中設計類似的東西?

+0

你爲什麼要重新發布你的問題:http://stackoverflow.com/questions/4711811/how-do-i-upload- a-file-process-it-and-return-a-result-file-in-a-single-request-t而不是修改原始文件? – 2011-01-19 08:37:36

+0

@Ladislav Mrnka:這是另一個問題。我需要適當地設計數據類型,而不是如何實現該請求的一般概念。 – sharptooth 2011-01-19 08:44:31

回答

2

您可以在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>