我有一个轻量级客户端应用程序,它使Asyncronous WCF调用IIS主机WCF服务。然后托管服务充当客户端以对另一个外部服务进行SOAP调用,然后一些工作将结果返回给客户端。
客户>> WCF IIS服务>> SOAP服务
我花了很多时间,确保客户端> WCF IIS服务是多线程和Asyncronous,只是从 WCF IIS服务>>中找到它同步的瓶颈。 SOAP服务。
有没有办法让客户端异步调用WCF IIS服务,这反过来又使Async alls到SOAP服务,然后将结果返回给CLient?
现在有点难以理解,任何帮助都会受到赞赏。
答案 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);
}
}