我必须实现以下场景:
在SOAP服务中,我只返回如下内容:
class ProcessingResult {
public:
bool IsFailed;
string ErrorMessage;
byte[] ResultData;
};
并且中间件可以通过线路正确地序列化,然后客户端代理(通过解析WSDL生成)将反序列化它,客户端会很高兴。
如何在WCF REST服务中设计类似内容?
答案 0 :(得分: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>