【问题标题】:WCF, Sending an unknown type to a WCF serviceWCF,向 WCF 服务发送未知类型
【发布时间】:2011-03-05 15:53:25
【问题描述】:

考虑两个 WCF 客户端连接到一个 WCF 服务(服务器)的场景,该服务将从一个客户端接收一个对象,并通过一些操作合约和客户端回调将其发送给另一个,两个客户端都有此类型对象,但我们不希望 WCF 服务(服务器)依赖于这种类型。

这个项目比这个大得多,但我想知道你是否可以将一个未知类型的对象发送到服务并以某种方式在另一个客户端上接收它。我看到了,但对我一点帮助都没有:Can WCF service transmit type (client doesn't know this type) information?

提前致谢。

【问题讨论】:

  • 服务合同会是什么样子?公共 XMLElement SendReply(XMLElement 数据)?服务如何知道如何转发消息?
  • 这可能会有所帮助:pmichaels.net/2015/01/14/…

标签: wcf wcfserviceclient


【解决方案1】:

你可以用“原始”Message 数据类型做某些事情——但这真的不是很好的编程......

在这里阅读:

【讨论】:

  • 现在我真正想做的事情已经很清楚了,你有什么建议?我更喜欢更干净的东西,谢谢。
  • 这很干净。如果您正在构建不需要知道传输对象类型的路由器或中介,您应该直接使用Message。客户端和实际服务都可以使用具体类型。
  • 引用“当使用 Message 类型的参数时,只能有 1 个参数,并且操作的返回类型必须为 void 或必须也是 Message 类型”,仅此一项就让我更加头疼.
  • @Tom:好吧,您可以以一种可以将其表示为 XML 模式的方式来确定您的类型(因为这是将数据作为 WCF 消息发送的先决条件)——因此不包括接口,泛型,通用的“对象”类型——或者你必须使用原始的Message 类型——我真的没有看到任何替代......
【解决方案2】:

在 WCF 中无法发送具有未知类型的“对象”,因为 WCF 需要与 WSDL 完全兼容 - 而 WSDL 需要透明的类型定义。

话虽如此,如果您使用object 类型,我相信有一种方法可以将其作为字符串加载,并且在WSDL 中它被定义为xs:anyType

我个人更喜欢将类型定义为字符串并传递可以使用普通 XML 序列化进行序列化的 XML。我在我们公司使用过它,效果非常好,尤其是因为我们会将 XML 作为文档存储在数据库中。

【讨论】:

  • 您能详细说明一下吗?看来你有我的问题的答案,谢谢。
  • 如果您还需要传递类型信息,您可以查看 RIA 服务。这确实是你需要的,它也可以传输类型。
  • 谢谢,我会的,虽然我对此一无所知。你能把我提到的这种数据类型传输的部分介绍给我吗?
  • 我相信 XML 序列化是我要走的路,至少现在是这样,谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多