2009-02-11 117 views
1

继我上一个问题[链接文本] [1]后,我遇到了一个新问题。.NET 3.5 - 从WPF应用程序多次异步调用web服务

我有一个将调用Web服务的WPF应用程序。这个网络服务将通过按下'GO'按钮来异步调用。结果可能需要30秒左右才能回来。

问题是我希望用户能够多次点击'GO'按钮,因为他们想发出多个请求。

什么我想要的是客户端打开一个新的连接到web服务每次按下按钮。 Web服务的方法很简单:

invokeExecutionRequest(INT流程id)

此方法只返回一个标志specfying成功或失败的执行请求。

现在如果可能的话,我真的不想在客户端上排队这些请求,因为服务器上已经建立了一个队列。什么是最优雅的方式来实现这一目标?

+0

你以前的问题的链接中断 – 2009-02-11 07:48:22

回答

1

如果您正在使用WCF通信到您的Web服务,那么你可以控制连接打开/关闭:

  1. 有一个普遍的WCF连接(可能为窗口的范围,全局变量)
  2. 每次点击Go按钮时,检查连接是否打开。如果没有打开连接,那么就没有任何事情要做。
  3. 在某个逻辑点(关闭窗口,做一些意味着Go不会被点击的操作)关闭连接。
+0

唯一的问题是我没有使用WCF,只有香草ASMX网络服务。 – Alex 2009-02-11 11:54:22

0

我最终只是使用BackGroundWorkers来触发Web服务请求。我认为我们仍然以这种方式开放多个连接,但是请求的数量并不大,我们正在考虑改变我们的体系结构,以便发送给队列处理程序的一个主请求可以启动所有其他请求。

如果我有更多时间来解决这个问题,我认为WCF将是最好的选择。