我正在开发一个项目,其中一个中心类(主题)将包含大量数据.将有一个使用.net ajax显示此数据的aspx页面.当从任何页面更新主题时,我希望更新所有打开的页面.我将使用观察者模式.问题是,我是否将实际的aspx页面作为观察者,还是有更好的方法来做到这一点?
在这种情况下,观察者模式没有意义.
Web(和ASP.NET)通过请求(例如,来自Web浏览器)和响应(例如,来自Web服务器)来工作.
观察者模式要求主体(例如Web服务器)维护对其观察者(例如Web浏览器)的引用并将通知更新推送给它们.显然,这不适用于Web浏览器 - Web服务器方案.
我同意Sergio的观点,最好的方法可能是让您的客户(Web浏览器)定期检查资源(Web服务器)的更新.执行此操作的最佳方法是AJAX调用.
一个很好的例子是Gmail,新邮件在服务器上收到后很快就会出现在收件箱中,用户无需提出明确的请求.这是通过AJAX调用完成的,该调用定期检查Gmail服务器是否有新消息.
更新时间(2012.03.01): -
最近的发展已经允许将数据从Web服务器推送到客户端以成为更现实的可能性,例如SignalR.