【发布时间】:2011-06-09 22:09:27
【问题描述】:
拥有一个 SOAP Web 服务,它封装了对第 3 方 API 的调用...所以我们的应用程序可以简单地调用我的服务,然后我的服务会处理对 API 的所有各种调用。效果很好。
但是,我们遇到了一个问题,即我们要连接的 API 在任何给定时间最多允许对一组给定凭据进行 10 个连接。
连接最多需要几秒钟的时间来处理,但是当我们上线时,理论上我们可以让用户最大限度地利用这一点。因此,我们为 API 创建了多个帐户 (5),为 5 个用户提供了 50 个连接。
ASP.NET 如何处理与 Web 服务的连接?我知道它是异步工作的,但它会产生我的类的多个实例还是重用同一个类。变量是否会跨实例持续存在(即静态变量是否有效)?
我需要做的是,如果在 Client1 上调用 API 失败、翻转到 Client2(或 Clients[0]、Clients[1])等...遗憾的是,我无法检测给定的 Client 是否是在任何给定时刻失去联系。我可以通过测试调用来轮询它,但这需要时间并且不能保证在我进行调用时客户端有可用的连接。
我调用的 API 是通过 XMLRPC 代理类 (CookComputing)。是否在创建客户端或进行调用时进行“连接”,并传递凭据?
public static IVoicestar GetClient(string userID, string password)
{
IVoicestar client = XmlRpcProxyGen.Create<IVoicestar>();
client.Credentials = new NetworkCredential(userID, password);
return client;
}
由此看来,凭据只是“顺势而为”,直到我通过 Client.MethodCall() 拨打电话,然后建立连接。
【问题讨论】:
标签: asp.net web-services soap asmx xml-rpc