2011-07-22 15 views
1

我有一个WCF服务托管在IIS7的Web应用程序。它由WebServiceHostFactory创建。连接到服务的客户端调用Collect方法,并将数据存储到数据库。所有工作正常。WCF服务与回调和承载在IIS上的单身人士?

现在我想在每次收集新数据时刷新页面(即调用服务方法Collect)。

我的问题是:什么是最好的方法?

我正在考虑CallbackContract,但这需要一个单例模式(服务现在是PerCall),还是这是一个错误的假设?这种方法可行吗?

我的逻辑是:

  1. ASP.NET页面订阅
  2. 服务单从现在创建了
  3. 当方法被调用服务WCF服务调用用户(客户端)
  4. 因此应该只有一个服务实例以订阅工作(或是否是这样)
  5. 客户端页面刷新本身

问候, 凯特

+0

你打算如何在浏览器中触发页面重新加载ASP.NET页面?除非您使用某些高级推送产品,否则您必须轮询ASP.NET页面,然后轮询您的WCF服务。 –

+0

是的,我专注于解决回调问题,我错过了明显的。这是关于没有用户交互的页面更新。所以它是计时器。 – SmartK8

回答

1

不能从服务器用户的浏览器刷新页面。浏览器使用HTTP,这是一个请求 - 响应协议,所以如果浏览器没有发出请求,它不会寻找来自服务器的响应。

如果您在浏览器中托管Silverlight应用程序,这是一个不同的故事,但您没有提到任何地方的Silverlight。你也可以做HTML5中使用WebSockets的要求,但还没有完全标准化。

+0

谢谢,快速回复。那么你认为,没有Silverlight,这种情况是不可能的?是否有某种选择,或者我只剩下“定时器”解决方案(每x秒/分钟),然后呢? – SmartK8

+0

使用JavaScript进行轮询是最常见的方法。您向Web服务提交AJAX请求,并使用诸如jQuery之类的JavaScript库更新用户浏览器中的页面,而无需进行整页刷新。 –

+0

是的,当然这是我的默认选项。我想要更复杂(高效)的东西,但我想这必须做。现在我很高兴在探索(甚至实施!:O)这些其他选项之前询问。我完全忘了服务器不能使用重定向:)我只是使用回调,我已经有回调工作的基础设施,所以它会很容易。感谢您让我从失望的苦痛中解脱出来,还有一些我毫无意义的工作。 – SmartK8