如何打电话给我的WCF服务asynchronous?

我有一个从Windows服务调用的WCF服务。

WCF服务运行一个SSIS包,该包可能需要一段时间才能完成,我不希望我的Windows服务必须等待它完成。

我如何使我的WCF服务调用asynchronous? (或默认是asynchronous?)

您在MSDN的以下文章中将满足您的所有需求:

实现asynchronous服务操作

调用WCF服务asynchronous

devise服务合同

在Visual Studio 2010上, Add Service Reference > click Advanced button > check the Generate Asynchronous Operationscheckbox。

这样做后,asynchronous操作将被添加并供您使用。

您的客户端(Windows服务?)内部的WCF代理需要在创build时指定,您希望有可用的asynchronous操作。

您可以修改现有的WCF代理,方法是右键单击它并select“configuration服务引用”。从这里您只需要勾选“生成asynchronous操作”旁边的checkbox,

好的,这是WCF代理服务的一面照顾。 现在,您需要在客户端内部使用代理的APM(asynchronous编程模型)。

服务方面:

 [ServiceContract] public interface IMyService { [OperationContract] bool DoWork(int i); } 

客户端:

 [ServiceContract(Name = nameof(IMyService))] public interface IMyServiceClient : IMyService { [OperationContract] Task<bool> DoWorkAsync(int i); }