作为客户端是否有可能获得 WCF 主机公开的合同列表?
我想查询一个服务并询问它实现了哪些接口。
看看WCF 发现。
WCF 不支持此功能。
您可以查询服务的 WSDL 协定,但不能查询 WCF 协定或任何接口。
您能做的最好的事情就是查看暴露的内容,并假设这是界面。您将无法看到该类实现的所有不同接口。例如,如果您有一个实现 IFooService 和 IDisposable 的服务,并且 IFooService 通过 WCF 公开,您将能够从客户端看到 IFooService 的所有方法。
WCF 测试实用程序将采用给定的 wsdl 并为其生成客户端,查看源代码可能是一个很好的起点。(你必须用反射器之类的东西来反编译它)
另一个想法,您可以以编程方式调用 svcutil 为给定的 wsdl 生成客户端,然后调用 msbuild 来编译它,并使用反射来加载输出程序集。这将是一个相当大的工作量,我不确定你会用它做什么。您必须构建一个相当复杂的 UI 来检查和调用客户端。
通常,(Web)服务由基于 XML 的协议(如 WSDL)描述。这既用于发现服务,也用于描述它们的操作。UDDI 有时也被使用,但主要用于企业应用程序集成(内部使用)。
因此,您可以让您的 WCF 服务生成 WSDL 信息并让您的客户端查询该信息。