WCF或ASMX SOAP Web服务中的多态接口

时间:2014-02-10 22:14:07

标签: c# .net wcf web-services

我想在WCF或ASMX中实现的dotNET SOAP Web服务中表示多态数据,以便模式正确反映我的意图。

特别是我对表达结构化数据(如JSON)所需的闭合多态(AKA sum类型AKA标记的union AKA代数数据类型...)感兴趣。

这是一个多次以不同形式提出的问题。然而,答案经常声称即使在原则上也不可能在消息传递协议中表示多态性。 e.g。

WCF MessageContract Inheritance

当然,允许开放多态,即允许X为任何实现接口I的类型,会引发非平凡的设计问题。但是,闭合多态(X可以是任何类型T1T2T3)设计协议并不困难,实际上http://www.w3.org/2001/XMLSchemasubstitutionGroup完成这项工作。参见:

Defining recursive algebraic data types in XML XSD

我到目前为止所阅读的所有内容都表明,WCF和ASMX都无法使用substitutionGroup或任何其他正确表达多态的方法生成模式。相反,我只是在数据契约的KnownTypes属性中列出具体类型,并希望最好。

如果这真的是我们能做到的最好的事情,这似乎无法表达一个非常基本的界面概念,我相信微软的好人有一个非常好的借口。如果有人能够了解原因,我将不胜感激。

0 个答案:

没有答案