【问题标题】:.asmx service : what is best way to call a method upto 300 times from inside web method?.asmx 服务:从内部 Web 方法调用方法最多 300 次的最佳方法是什么?
【发布时间】:2015-11-22 13:32:50
【问题描述】:

我有一个现有的 Web 方法(内置于 .net 4.0 asmx),它正在调用两个不同的数据库以获取数据,并在处理数据后,将密钥作为字符串返回给客户端。 现有功能是从一个表中获取数据并生成一个密钥并在另一个数据库中检查它,如果它不在第二个数据库中,那么它将密钥返回给 Web 服务的客户端。

现在我们有一个更改请求,我们必须更新可以生成多达 300 个密钥的 Web 方法。在这种情况下,我们可能需要调用这些数据库 300 次,这可能会影响性能..

请建议最好的实现方式是什么?穿线??还是别的什么??

约束: 服务托管在 iis 中 内置.net 4.0 使用 .asmx 模板

[WebMethod]
public string GetKey(string parameter) 

    {
        /// Fetches data from  database 1 
        /// Fetches data from database 2
        /// Based on some calculation returns Key1

        returns key1;

    }

以上是现有的逻辑来获取 300 个不同的键,我可能需要从客户端调用上述 Web 方法多达 300 次,这将是一个更大的性能问题

或者我可能需要在 Web 方法中实现线程,但是由于 IIS 的工作线程,可能会再次出现性能问题。

请建议我应该如何实施 Web 方法,以便将生成多达 300 个密钥的性能影响降至最低。

提前致谢

【问题讨论】:

  • 尝试在您的 Web 服务中添加一个参数,输入所需的总键,然后输出包含这些值的 JSON 字符串
  • 如何在一个请求中生成一个密钥的Web方法中调用该方法?
  • 抱歉,误解了您的问题,在这种情况下,您可以尝试选择另一个数据库中的所有现有密钥,然后将它们存储在一个列表中,然后在生成这 300 个密钥时,检查是否键存在于该列表中,而不是再次从数据库中获取数据。
  • 嗨 User2012384,我想,我的问题并不清楚。现在我已对其进行了更新,请查看并回复。非常感谢您的快速回复。

标签: c# asp.net web-services asmx


【解决方案1】:

只需调用一次数据库并传递所有 300 个键。 像这样:

SELECT Key FROM Table
WHERE Key IN (array of keys)

然后在回答中你得到了所有已经存在的密钥。并且可以再生它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多