2

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

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

我花了很多时间,确保Client > WCF IIS Service是多线程和异步的,却发现它从WCF IIS Service >> SOAP Service成为 Syncronously 的瓶颈。

有没有办法对 WCF IIS 服务进行客户端异步调用,这反过来又将异步全部发送到 SOAP 服务,然后将结果返回给客户端?

我现在有点难以置信,任何帮助表示赞赏。

4

2 回答 2

0

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

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

于 2012-10-13T03:29:27.450 回答
0

我无法控制 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);
    }
}
于 2012-10-14T18:38:18.553 回答