我想开发一个WCF服务,它将接收各种xml并保存它们以供进一步处理。我不能坚持使用特定的数据类型,因为传入的xml将是完全不同的。到目前为止,我选择了使用流参数的方法:
[ServiceContract]
public interface IApiService
{
[WebInvoke(Method = "POST",
UriTemplate = "getXml",
BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
Stream getXml(Stream request);
}
我正在为响应返回一些文本。该服务将由外部应用程序调用,我想远离。net特定的问题。
有更好的方法吗?
如果您将收到的XML总是格式良好的,则可以使用XElement
或XmlElement
类型作为输入和返回值。前者是WCF可以处理的IXmlSerializable
类型,后者是WCF序列化器作为特殊情况处理的类型。这样做的好处是,您拥有操作数据的所有XML OM,并且将自动为您设置输出的内容类型。
如果输入/输出不一定是格式良好的XML,那么您的解决方案(使用Stream
)是您唯一可以使用的解决方案。
如果传递的XML可以是任意的,那么Stream
看起来是一个很好的解决方案。您也可以使用byte[]
甚至string
。