Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net观察者模式_Asp.net_Design Patterns_Methodology - Fatal编程技术网

asp.net观察者模式

asp.net观察者模式,asp.net,design-patterns,methodology,Asp.net,Design Patterns,Methodology,我正在做一个项目,其中一个中心类(主题)将包含大量数据。将有一个使用.NETAjax显示此数据的aspx页面。当主题从任何页面更新时,我希望所有打开的页面都更新。我将使用观察者模式来实现这一点。问题是,我是让实际的aspx页面成为观察者,还是有更好的方法来实现这一点?我不熟悉观察者模式,但是您必须这样做的唯一方法是在页面加载上放置一个javascript无止境循环,每X秒调用服务器上的AJAX方法来检查更新。在这种情况下,观察者模式没有意义 web(和ASP.NET)通过请求(例如来自web浏览

我正在做一个项目,其中一个中心类(主题)将包含大量数据。将有一个使用.NETAjax显示此数据的aspx页面。当主题从任何页面更新时,我希望所有打开的页面都更新。我将使用观察者模式来实现这一点。问题是,我是让实际的aspx页面成为观察者,还是有更好的方法来实现这一点?

我不熟悉观察者模式,但是您必须这样做的唯一方法是在页面加载上放置一个javascript无止境循环,每X秒调用服务器上的AJAX方法来检查更新。

在这种情况下,观察者模式没有意义

web(和ASP.NET)通过请求(例如来自web浏览器)和响应(例如来自web服务器)工作

观察者模式要求主体(例如web服务器)维护对其观察者(例如web浏览器)的引用,并向其推送通知更新。显然,这不适用于web浏览器web服务器场景

我同意Sergio的观点,最好的方法可能是让客户端(web浏览器)定期检查资源(web服务器)的更新。最简单的方法是AJAX调用

一个很好的例子是Gmail,新邮件在服务器上收到后不久就会出现在收件箱中,用户无需发出明确的请求。这是通过AJAX调用完成的,AJAX调用会定期检查Gmail服务器是否有新消息

更新(2012.03.01):-


最近的发展使得将数据从web服务器推送到客户端成为一种更现实的可能性,例如,Sergio是对的,在某种程度上你也是对的。通过Asp.NETAjax实现这一点的最简单方法是使用AJAX计时器控件,但您肯定不想在所有页面上重复它。更好的方法是将该功能包装到母版页中,或者甚至创建一个从母版页派生的基页

看看这张照片,还有一张像样的照片

不过,作为设计的补充说明,我不一定要将实际的观察者代码放在您的代码中。相反,您希望将这些事件转发到某个底层模型。其思想是,您的代码只负责与UI相关的内容以及实现这些内容的逻辑。基本上是MVP/MVP中的V

另外,考虑到您谈论的是一个没有真实状态的HTTP响应/请求周期,我不确定“实际”观察者模式在web上下文中的应用情况如何