我不断听到服务器端的ASP .NET AJAX控件(如UpdatePanels)虽然看起来像并不是真正的AJAX,因为渲染并不完全在客户端。我试图更清楚地理解这一点。有人可以详细说明吗?
谢谢...
最佳答案
UpdatePanels在AJAX周期的早期就问世了,而且很沉重(它们可以发出大约100-300k的JavaScript)。在后台,UpdatePanels通过JavaScript XMLHttpRequest将整个页面发布回服务器。新页面是使用正常页面生命周期生成的,就像回发一样,但是只有位于UpdatePanel中的部分(以及更新ViewState等必需的部分)才被发送回客户端。从那里插入标记,而没有可见的闪烁或页面状态中断。
大多数竞争的AJAX工具都倾向于超轻量级的实现,这些实现使您可以通过Javascript发行或生成一小段HTML,我想这是当今的主要方向,尤其是在ASP.NET世界之外。
通过电线发送的数据总量差异巨大-请参阅下面的链接。在低流量的情况下,它可能没有什么区别,但是对于像StackOverflow这样的网站,它肯定会显示在带宽账单上。
综上所述,我认为要说UpdatePanels实际上不是AJAX是不公平的,因为它们确实是通过异步JavaScript来发布HTML的-只是顶部有一个巨大且通常很麻烦的框架。 UpdatePanels有时会受到不好的说唱,但它们提供了非常简单的开发人员体验。我经常发现它们在人流少的情况下很有用。
更新:Here是一篇文章(旧但仍然有效),检查了UpdatePanels往返服务器的有效负载。它还进入Page Methods,这是UpdatePanels的轻量级基于Web服务的替代方法。这是Microsoft AJAX经常被忽略的部分。
关于c# - MS UpdatePanels不是真正的AJAX吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3233180/