动态添加服务引用

时间:2012-10-01 16:56:49

标签: wcf wcf-data-services wcf-binding wcf-client

我们可以动态地向项目添加服务引用,而无需在visual studio中使用添加引用。 Wsdl导入的元数据是否有助于实现这一目标,有些人可以帮助我动态加载和附加服务到项目并在wcf中使用客户端或建议我实现这一目标的方法。

2 个答案:

答案 0 :(得分:0)

.NET框架有一个名为System.ServiceModel.Discovery的命名空间。从较高级别开始,您可以使用DiscoveryClient来查找可供使用的服务。

为了能够找到DiscoveryClient的服务,需要通过AnnouncementClient课程发送服务信息。此类允许服务发布公告消息。来自文档:

  

公告消息包含有关服务的信息,例如其完全合格的合同名称,服务所在的任何作用域以及服务要发送的任何自定义元数据。

这些类应该是为动态服务发现和使用提供管道所需的一切。

答案 1 :(得分:0)

如果您尝试使用现有的第三方端点(不受您控制的服务),.NET框架中至少提供了两种方法。

  1. MetadataExchangeClient
  2. MetadataResolver
  3. MetadataExchangeClient将连接到MEX / wsdl端点并返回表示服务元数据的对象集合。

    如果您传递MEX / wsdl端点和要解析的类型,MetadataResolver将返回已知服务的配置。这允许您导入连接设置,而无需预先指定它。

    要查看其他可用内容,请浏​​览System.ServiceModel.Description命名空间。它有上面的两个类以及与动态服务解析相关的其他类。

    编辑:这能够为我检索元数据:

    MetadataExchangeClient client = new MetadataExchangeClient(
        new Uri("http://localhost:22948/Service1.svc?wsdl"),
        MetadataExchangeClientMode.HttpGet);
    var response = client.GetMetadata();