如何打电话给我的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 Operations
checkbox。
这样做后,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); }