使用流参数的POX(纯旧xml)服务



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

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

我正在为响应返回一些文本。该服务将由外部应用程序调用,我想远离。net特定的问题。

有更好的方法吗?

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

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

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

最新更新