WCF异步客户端调用WCF异步服务

时间:2012-10-13 02:18:39

标签: .net wcf asynchronous

我有一个轻量级客户端应用程序,它使Asyncronous WCF调用IIS主机WCF服务。然后托管服务充当客户端以对另一个外部服务进行SOAP调用,然后一些工作将结果返回给客户端。

客户>> WCF IIS服务>> SOAP服务

我花了很多时间,确保客户端> WCF IIS服务是多线程和Asyncronous,只是从 WCF IIS服务>>中找到它同步的瓶颈。 SOAP服务

有没有办法让客户端异步调用WCF IIS服务,这反过来又使Async alls到SOAP服务,然后将结果返回给CLient?

现在有点难以理解,任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

是的,如果我理解你,您可能只需要在WCF服务器OperationContract中设置AsyncPattern = true,然后使用BeginXXX和EndXXX方法实现每个WCF服务器调用。

如果您当前同步实现了WCF服务器调用,那么您应该首先在同步方法上使用BeginInvoke,尽管最好使它们显然完全异步。

答案 1 :(得分:0)

我无法控制SOAP Java服务,我可以在服务引用上设置配置以运行Asyncronously。如果我要使用BeginXXX和EndXXX方法,我将如何在WCF方法调用中运行结果?

public class AddService : IAddService
{
    // SOAP Java service reference
    ResultServiceClient proxy = new ResultServiceClient();

    public int AddNumbers(int x, int y)
    {

        proxy.BeginGetResult(x, y, new AsyncCallback(OnEndAdd), null);

        /// how to return a result here.??????
        return result;
    }

    void OnEndAdd(IAsyncResult result)
    {
        int result = proxy.EndGetResult(result);
    }
}