2 WCF 服务和 C# 线程处理

本文关键字:线程 处理 WCF 服务 | 更新日期: 2023-09-27 18:31:38

我正在尝试编写代码,尽可能快速可靠地导入一堆数据。使用线程,我已经能够显着加快我在本地计算机上编写的导入代码,但是当我在我们的远程服务器上运行它时,它似乎有一些 WCF 问题......

我有两个 WCF 服务实现:服务 1 和服务 2。

基本上这是工作流程:

Parallel.ForEach(objectData.Tables[0].Rows.Cast<DataRow>(), dataRow =>
{
...
    Service1.ImportObjectFirstPart(ObjectToEnter);
...
    Service2.ImportObjectSecondPart(ObjectToEnter);
}

远程和本地服务1调用大约需要3秒,服务2大约需要7秒。 但是,在我的本地计算机上,对 service2 的调用在大约 20 次 service1 调用后开始。在服务器上,几乎每个 service1 调用在第一个 service2 调用开始之前完成。(这两种服务都作为 PerCall 实现)。

调用服务的代码按预期使用 99% 的 CPU 一段时间,然后减慢到爬行,然后我必须自己退出它。知道可能出了什么问题吗?

谢谢

2 WCF 服务和 C# 线程处理

你试过吗

[服务行为(并发模式 = 并发模式.多个)]

您可以在此处阅读详细信息

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx

默认值是单一的,因此您应该期望您获得的行为非常合理。