【发布时间】:2013-02-06 17:59:26
【问题描述】:
我们正在使用 .NET 3.5 应用程序,该应用程序正在快速接近旧版状态。我们有一个现有的 SOAP 服务,它从我们的数据库中读取记录并将它们保存到第三方 MS SQL 数据库中,在一个批次中发送所有数据行。
这一直运行良好,但最近我们接收了一个比以往任何时候都大得多的客户,而且他们正在传输更大的批次,以至于他们开始失败。我们已经提高了 IIS 中的超时和最大内存大小,并在 web.config 中最大化了 maxRequestLength,但我们仍然遇到了大小问题。
所以,我知道从长远来看,我们应该考虑从 SOAP 转移到 WCF,并且相关计划正在制定中。但与此同时,我们需要对这个新客户进行短期修复。当然,为了让业务和销售人员满意,我们需要尽快完成。
我想知道最佳实践方法可能是什么。最初我在想这样的事情,但我可能想太多了:
为我们不想一次尝试同步所有记录的 # 条记录建立基准。
在尝试保存数据之前,对照该基准检查记录数
如果高于它,则将传输分解为低于该基准的段。 SELECT TOP 10000 * FROM table WHERE sent = false 等,如果基准是 10000。那么一旦提交,这些记录的更新发送为 true。重复。
很明显,这会减慢进程,所以为了处理用户体验,我们可能想扔一个状态栏,让他们可以看到进度。
我走对了吗?
【问题讨论】:
-
当您说“SOAP”时,您的意思是“ASMX”? WCF 也可以做 SOAP,并且替代了 ASMX。
-
.asmx。是的,好问题。本来想说但忘了。
-
WCF 在处理数据方面也更加高效。 ASMX 有时会在内存中同时保留三个数据副本。 WCF 甚至允许您将数据流式传输回客户端。
-
明白。所以,我想我的问题是:从 .asmx 迁移到 WCF 是一个快速的过程吗?我不熟悉WCF。我假设将我们的数据映射到他们的数据的核心逻辑将保持不变,但包装器会改变。对吗?
-
基本正确。假设您的服务不花哨,这是一个非常简单的转换。