WCF从jquery调用一个很长的进程

时间:2012-05-06 07:12:28

标签: jquery wcf

我有一个面向WCF服务的互联网,该服务调用局域网内的其他几项服务。 此调用可能需要几秒钟才能完成。

我通过jquery调用此WCF服务,并在线程返回响应后更新UI。

我想要做的是确保如果用户在服务运行时导航到另一个页面,通过jquery进行的第二次调用(在新页面上)将不会在另一个线程上再次启动该进程。

是否有任何模式或WCF功能来控制此类行为?

1 个答案:

答案 0 :(得分:0)

这里的问题是浏览器是无状态的。一个页面中的HTML,CSS和JavaScript在与另一个页面完全独立的上下文中加载。因此,即使您的进程继续运行,它们也无法将数据返回到页面,因为它将不再被加载。

听起来您希望确保即使用户更改页面也会更新您的UI。这可以通过使用Comet来实现。

Comet的工作方式是打开从浏览器到服务器的HTTP请求。然后,服务器保持该连接打开,直到它具有需要推送回客户端的数据。当服务器准备就绪时,它会将响应发送给客户端。

虽然这种技术通常用于在某些内容发生变化时使用新数据更新N个客户端,但您可以使用此技术将响应与特定请求分离。换句话说,您可以设置应用程序,以便对服务器发出的请求不会收到响应。相反,服务器将通过彗星连接传递更新。

这将确保在计算结果后,发出请求然后更改页面的任何客户端仍会收到对UI的更新。

许多主要平台都支持Comet:Java,PHP,.NET,node.js是我所知道的支持这种技术的一些平台。

获得支持的另一种类似技术是WebSockets;但是,并非所有浏览器都支持此技术。首先在您选择的特定平台上对Comet进行一些研究,如果您有更具体的问题,可以在这里询问。祝你好运!