【问题标题】:WCF -> Websphere Integration Developer and polymorphismWCF -> Websphere 集成开发人员和多态性
【发布时间】:2026-01-25 06:05:02
【问题描述】:

我有一个 .NET WCF 服务,它公开了一个使用多态的对象。

显然,Websphere Integration Developer 无法正确处理此问题(我不是 Websphere 开发人员),除非通过添加所有可能的多态性的所有字段并使用枚举等来表示它是某某类型的对象.

我简直不敢相信 IBM 创造了一个不支持多态的产品!所以..任何人都可以解释如何处理这个问题,或者指出我可以传递的资源吗?

【问题讨论】:

    标签: polymorphism websphere


    【解决方案1】:

    这可能不是问题,但您应该知道 Web 服务通常不支持虚拟方法。因此,它们并不真正支持多态性。

    事实上,Web 服务根本不是面向对象的。它们都是关于 XML 的,它不是面向对象的。与具有方法和属性的类的任何相似之处都是您的工具想象的虚构——特别是生成代理类的工具会查看 Web 服务的 (XML) 描述并生成或多或少类似于所描述的类。

    有时更多,有时更少。

    【讨论】:

    • 同意。但是继承层次结构可以以可互操作的方式使用复杂类型和 complexContent/extension 建模。
    • @Rune:是的。我认为这个问题是关于 OO 风格的多态性,而不是关于“数据多态性”。
    【解决方案2】:

    问题是您的客户只能通过合同或 wsdl 了解您的服务。

    wsdl 只定义合同中方法的输入和输出(以及这些方法使用的数据合同) - 它不公开服务类(或任何服务类)的任何基类等数据合同)您的客户将调用。

    并不是说 WebSphere 不能处理多态性,而是 wsdl 不能按照您所期望的方式表达它。

    【讨论】: