使用Stream参数的POX(Plain-Old-Xml)服务

时间:2011-08-29 19:05:14

标签: .net xml wcf

我想开发一个WCF服务,它将接收各种XML并保存它们以供进一步处理。我不能坚持特定的数据类型,因为传入的XML将完全不同。到目前为止,我已经选择了使用Stream参数的方法:

[ServiceContract]
public interface IApiService
{
    [WebInvoke(Method = "POST",
        UriTemplate = "getXml",
        BodyStyle = WebMessageBodyStyle.Bare)]
    [OperationContract]
    Stream getXml(Stream request);
}

我正在返回一些文字以供回复。该服务将由外部应用程序调用,我希望远离特定于.NET的问题。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您收到的XML格式正确,则可以使用XElementXmlElement类型作为输入和返回值。前者是WCF可以处理的IXmlSerializable类型,后者是由WCF序列化器处理为特殊情况的类型。优点是您拥有所有XML OM来操作数据,并且将自动为您设置传出内容类型。

如果输入/输出不一定是格式良好的XML,那么您的解决方案(Stream)是唯一可以使用的解决方案。

答案 1 :(得分:0)

如果传递的XML可以是任意的,Stream看起来是个很好的解决方案。您也可以使用byte[]甚至string