我们可以动态地向项目添加服务引用,而无需在visual studio中使用添加引用。 Wsdl导入的元数据是否有助于实现这一目标,有些人可以帮助我动态加载和附加服务到项目并在wcf中使用客户端或建议我实现这一目标的方法。
答案 0 :(得分:0)
.NET框架有一个名为System.ServiceModel.Discovery的命名空间。从较高级别开始,您可以使用DiscoveryClient来查找可供使用的服务。
为了能够找到DiscoveryClient的服务,需要通过AnnouncementClient课程发送服务信息。此类允许服务发布公告消息。来自文档:
公告消息包含有关服务的信息,例如其完全合格的合同名称,服务所在的任何作用域以及服务要发送的任何自定义元数据。
这些类应该是为动态服务发现和使用提供管道所需的一切。
答案 1 :(得分:0)
如果您尝试使用现有的第三方端点(不受您控制的服务),.NET框架中至少提供了两种方法。
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();