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

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

如何使我的WCF服务调用异步? (或者它是默认的异步?)

有帮助吗?

解决方案

以下来自MSDN的文章将满足您的所有需求:

实施异步服务操作

调用WCF服务异步

设计服务合约

其他提示

在Visual Studio 2010上,在添加服务参考>点击高级按钮>选中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);
}

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

您可以通过右键单击现有的WCF代理并选择“配置服务引用”来修改现有的WCF代理。在这里,您只需选中“生成异步操作”旁边的复选框

好的,这就是WCF代理方面的事情。 现在,您需要在客户端内部使用APM(异步编程模型)和代理。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top