2 WCF服务和c#线程

时间:2012-04-18 19:54:24

标签: c# .net multithreading wcf parallel-processing

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

我有两个WCF服务实现:Service1和Service2。

基本上这是工作流程:

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

Service1呼叫大约需要3秒,而service2远程和本地大约需要7秒。但是在我的本地计算机上,在大约20次service1调用之后启动对service2的调用。在服务器上,几乎每个service1调用都在第一个service2调用开始之前完成。 (两种服务都以PerCall的形式实现。)

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

谢谢,

1 个答案:

答案 0 :(得分:1)

你试过吗

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]

你可以在这里阅读详细信息

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

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