获取由服务实现的WCF合同



作为客户端,是否有可能获得WCF主机公开的合同列表?

我想查询一个服务,并询问它实现了什么接口。

看看WCF发现。

WCF不支持此功能。

您可以查询服务的WSDL协定,但不能查询WCF协定或任何接口。

您所能做的最好的事情就是查看公开了什么,并假设这就是接口。您将无法看到该类实现的所有不同接口。例如,如果您有一个实现IFooService和IDisposable的服务,并且IFooService通过WCF公开,那么您将能够从客户端看到IFooService的所有方法。

WCF测试实用程序将获取给定的wsdl并为其生成客户端,查看其源代码可能是一个很好的起点。(你必须用类似反射器的东西来反编译它)

另一个想法是,您可以通过编程调用svcutil为给定的wsdl生成客户端,然后调用msbuild对其进行编译,并使用反射加载输出程序集。这将是一个相当大的工作量,我不确定你会用它做什么。你必须构建一个相当复杂的UI来检查和调用客户端。

通常(web)服务是由基于XML的协议(如WSDL)来描述的。这既用于发现服务,也用于描述其操作。UDDI有时也被使用,但主要用于企业应用程序集成(内部使用)。

因此,您可以让WCF服务生成WSDL信息,并让客户端查询该信息。