如何解决返回WCF中已序列化的类型
| 我想使用WCF设置跨平台的WebService。一个问题-实际上是一个性能问题-是我想返回一个Type(比如说Event),而我已经以XML形式拥有此事件。因此,我想避免反序列化为Event,然后WCF将其序列化回XML。知道如何管理吗?我要实现的是\“ WCF,该方法返回一个Event-object,但是我已经将其序列化为XML,因此请使用它,不要强迫我先对其进行反序列化,以便您可以再次对其进行序列化\ ”。 丹尼尔解决方法
执行消息(反)序列化的WCF组件为“ 0”。
因此,您可以提供自定义
IDispatchMessageFormatter
。在SeralizeReply()
方法(返回Message
)中,您可以使用Message.CreateMessage()
重载,该重载取XmlReader
,并提供从XML创建的XmlReader。就是这样。不过,还有一些工作要做。您需要确定是否值得。
,我认为您应该对服务请求和响应使用“ 3”类而不是DataContract定义:这应该使您对SOAP消息结构有更多控制。如果您走这条路,那么您将需要创建一个自定义代理(请参阅此处以开始)。
,我不知道有什么办法。除非您的Event
很大,否则额外的步骤可能不会伤害您,至少它是本地的-如果它很大,则您的主要问题是带宽,无论哪种方式,带宽都是相同的。
您可以在消息中将数据公开为XmlElement
,这将避免此步骤-但是呼叫者将需要知道将其识别为Event
(因为它们在mex / wsdl中所看到的只是一个chunk-o \'-xml )。
最终,这样做的部分原因是WCF是基于对象的模型,并且序列化程序实际上可以通过许多技巧进行交换-因此,就常规WCF模型而言,拥有xml的事实是无关紧要的:实际上不是什么东西。它需要对象,因此它可以要求实际的序列化程序来完成这项工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。