【发布时间】:2010-09-28 21:14:38
【问题描述】:
我有一个从 Windows 服务调用的 WCF 服务。
WCF 服务运行一个 SSIS 包,该包可能需要一段时间才能完成,我不希望我的 Windows 服务必须等待它完成。
如何使我的 WCF 服务调用异步? (或者默认是异步的?)
【问题讨论】:
标签: c# .net wcf windows-services
我有一个从 Windows 服务调用的 WCF 服务。
WCF 服务运行一个 SSIS 包,该包可能需要一段时间才能完成,我不希望我的 Windows 服务必须等待它完成。
如何使我的 WCF 服务调用异步? (或者默认是异步的?)
【问题讨论】:
标签: c# .net wcf windows-services
MSDN 的以下文章将满足您的所有需求:
【讨论】:
在 Visual Studio 2010 上,在 Add Service Reference > click Advanced button > check the Generate Asynchronous Operations 复选框上。
完成后,异步操作将被添加并可供您使用。
【讨论】:
服务端:
[ServiceContract]
public interface IMyService
{
[OperationContract]
bool DoWork(int i);
}
客户端:
[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
[OperationContract]
Task<bool> DoWorkAsync(int i);
}
【讨论】:
您的客户端(Windows 服务?)内部的 WCF 代理需要在创建时指定您希望异步操作可用。
您可以通过右键单击现有 WCF 代理并选择“配置服务引用”来修改它,您只需在此处选中“生成异步操作”旁边的复选框
好的,这就是 WCF 代理处理的事情。 现在您需要在客户端内部使用带有代理的 APM(异步编程模型)。
【讨论】: