【问题标题】:Get WCF Contracts implemented by a service获取服务实现的 WCF 合同
【发布时间】:2012-01-20 14:04:08
【问题描述】:

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

我想查询一个服务并询问它实现了哪些接口。

【问题讨论】:

  • ServiceHost 没有实现任何服务契约——服务宿主托管的服务类——即实现服务契约的类
  • 是从客户端还是从服务托管代码中查询合约列表?
  • 我编辑问题。我想在客户端获得服务器实现的合同接口列表。我希望我的表述现在更清楚......否则只是评论

标签: wcf service servicecontract


【解决方案1】:

看看WCF Discovery

【讨论】:

    【解决方案2】:

    这不受 WCF 支持。

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-23
          • 2020-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多