有没有办法用svcUtil生成仅基于任务的异步方法?
原因是我已经提供了我需要实现作为服务的WSDL。最简单的方法似乎是将它们作为服务引用添加,并将生成的接口实现为服务。只要你保持同步,这就行得很好但是对于异步,它显然会生成两个具有相同OperationContract
的方法,这是无效的。
当然,还有其他解决这种困境的方法。我的约束是我必须坚持给定的WSDL文件,所以我不能从界面生成WSDL(yay -.-)
关于重复索赔:不。这根本没有用。我现在使用ConcurrencyMode和基于任务的服务,两者之间的性能差异很大。例如:针对这些实现中的任何一个使用100个线程进行拍摄,
public async Task<SomeObj> GetSomeObj(SomeReq request)
{
await Task.Delay(1000);
return SomeObj();
}
比
表现得更好public SomeObj GetSomeObj(SomeReq request)
{
Thread.Sleep(1000);
return new SomeObj();
}
无论在ServiceBehavior中选择了什么ConcurrencyMode(有趣的是,它对性能的影响很小)。
所以问题仍然存在:如何从WSDL生成基于任务的服务契约,因为我们可以清楚地表明它们具有卓越的性能(无论是在启动行为方面还是在运行时性能的可预测性方面)。 / p>