Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 调用WCF异步服务的WCF异步客户端_.net_Wcf_Asynchronous - Fatal编程技术网

.net 调用WCF异步服务的WCF异步客户端

.net 调用WCF异步服务的WCF异步客户端,.net,wcf,asynchronous,.net,Wcf,Asynchronous,我有一个轻客户端应用程序,它对IIS主机WCF服务进行异步WCF调用。然后,托管服务充当客户端,对另一个外部服务进行SOAP调用,执行一些工作,然后将结果返回给客户端 客户端>>WCF IIS服务>>SOAP服务 我花了很多时间,确保客户机>WCF IIS服务是多线程和异步的,结果却发现它与WCF IIS服务>>SOAP服务同步出现瓶颈 有没有一种方法可以使客户端对WCF IIS服务进行异步调用,从而对SOAP服务进行异步调用,然后将结果返回给客户端 现在有点让我困惑,感谢您的帮助。是的,如果我

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

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

我花了很多时间,确保客户机>WCF IIS服务是多线程和异步的,结果却发现它与WCF IIS服务>>SOAP服务同步出现瓶颈

有没有一种方法可以使客户端对WCF IIS服务进行异步调用,从而对SOAP服务进行异步调用,然后将结果返回给客户端


现在有点让我困惑,感谢您的帮助。

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


如果您当前以同步方式实现WCF服务器调用,您应该首先能够在同步方法上使用BeginInvoke,不过最好是使它们完全异步。

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


如果当前WCF服务器调用是同步实现的,那么首先应该能够在同步方法上使用BeginInvoke,不过最好是使它们完全异步。

我无法控制SOAP Java服务,我可以将服务引用上的配置设置为异步运行。如果使用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);
    }
}

我无法控制soapjava服务,我可以将服务引用上的配置设置为异步运行。如果使用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);
    }
}

您好,如果您使契约异步并向IAddService添加方法“IAsyncResult BeginAddNumbers(int x,int y,AsyncCallback callback,object state)”和“int EndAddNumbers(IAsyncResult)”,则只有End方法必须返回结果。然后,您可以通过调用代理来实现这两种方法。嗨,如果您使契约异步,并将方法“IAsyncResult BeginAddNumbers(int x,int y,AsyncCallback callback,object state)”和“int EndAddNumbers(IAsyncResult)”添加到IAddService,则只有End方法必须返回结果。然后,您可以通过调用代理来实现这两种方法。