【问题标题】:How to use one binding for multiple web services of the same type?如何为同一类型的多个 Web 服务使用一个绑定?
【发布时间】:2013-06-21 07:46:50
【问题描述】:

在 WCF Web 服务部署中,我需要一个 Web 服务来连接到相同类型的多个服务。这些服务被动态添加到部署中,并且它们的数量应该是灵活的。 显然,在这种情况下,通常的方法“创建绑定”不是解决方案,因为我需要为我最终可能使用的每个服务创建绑定。

为此推荐的方法是什么? 起初,我正在考虑为多个服务之一创建一个绑定(在编译时间之前)。添加的新服务只会与它们的端点通信,在向它们发送一些东西之前,我会更改服务的端点名称。如果我想与这些服务并行发送,这似乎是非常错误和糟糕的。

有没有不重复绑定处理相同类型服务的正确方法?

我不习惯 WCF 的更复杂的场景,如果我没有很好地解释这个问题,那么在改写这个问题并为我的问题找到新的搜索词方面可能会有所帮助。

【问题讨论】:

  • 您的意思是要为部署期间动态添加的所有服务添加相同类型的绑定(例如 basicHttpBinding)?
  • 是的,它们将具有相同的绑定,因为它们都将以相同的方式和工作流程使用。

标签: c# wcf web-services binding


【解决方案1】:

我建议以编程方式配置客户端,他是一个例子How to programmatically connect a client to a WCF service?。您可以存储在单独文件中的端点 URL。该文件可以在部署期间修改

var myBinding = new BasicHttpBinding();

var urlList = GetUrlsFromCustomConfigFile();

var factoriesOfTheSameType = new List<ChannelFactory<IMyService>>();

foreach(var url in urlList)
{
    var myEndpoint = new EndpointAddress(url);
    var myChannelFactory = new ChannelFactory<IMyService>(myBinding, myEndpoint);
    factoriesOfTheSameType.Add(myChannelFactory);
}

现在您可以使用“myChannelFactory”创建客户端并并行调用它们或使用它执行任何您需要的操作。

【讨论】:

  • 感谢您的回复!我成功地以问题中描述的目的使用了编程客户端配置。
猜你喜欢
  • 2015-11-25
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 2015-03-28
  • 1970-01-01
  • 2020-09-18
相关资源
最近更新 更多