0

我们正在使用 .NET 3.5 应用程序,该应用程序正在快速接近旧状态。我们有一个现有的 SOAP 服务,它从我们的数据库中读取记录并将它们保存到第三方 MS SQL 数据库中,以单个批次发送所有数据行。

这一直运作良好,但最近我们接收了一个比以往任何时候都大得多的客户,而且他们正在传输更大的批次,以至于他们已经开始失败。我们已经提高了 IIS 中的超时和最大内存大小,并在 web.config 中最大化了 maxRequestLength,但我们仍然遇到了大小问题。

所以,我知道从长远来看,我们应该考虑从 SOAP 转移到 WCF,并且计划正在制定中。但与此同时,我们需要对这个新客户进行短期修复。当然,为了让业务和销售人员满意,我们需要它很快。

我想知道最佳实践方法可能是什么。最初我在想这样的事情,但我可能在盒子里想得太多了:

  1. 建立一个我们不想一次尝试同步所有记录的基准标记。

  2. 在尝试保存数据之前,请对照该基准检查记录数

  3. 如果它高于它,则将传输分解为低于该基准的部分。SELECT TOP 10000 * FROM table WHERE sent = false 等,如果基准是 10000。那么一旦提交,这些记录的更新发送为 true。重复。

  4. 显然,这会减慢进程,所以为了处理用户体验,我们可能想要折腾一个状态栏,以便他们可以看到进度。

我在正确的轨道上吗?

4

1 回答 1

0

除了 John 的评论之外,您还应该考虑是否以最佳方式解决问题。

看起来您正在通过调用 Web 服务来触发 2 个数据库之间的单向同步。这种方法会导致您遇到的超时和内存问题。

如果您的目标是进行单向同步,您可以使用免费的框架,例如 Microsoft 的同步框架:http: //msdn.microsoft.com/en-US/sync

于 2013-02-06T21:07:48.567 回答