返回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的事实是无关紧要的:实际上不是什么东西。它需要对象,因此它可以要求实际的序列化程序来完成这项工作。     

要回复问题请先登录注册