MS UpdatePanel不是真正的AJAX吗?

时间:2010-07-12 23:56:32

标签: c# .net ajax asp.net-ajax

我一直听说服务器端的ASP .NET AJAX控件(比如UpdatePanels)虽然看起来不是真正的AJAX,但因为渲染并不完全在客户端。我试图更清楚地理解这一点。有人可以详细说明吗?

...谢谢

2 个答案:

答案 0 :(得分:12)

UpdatePanels在AJAX周期中很早就出现了,它们很重(它们可以发出大约100-300k的JavaScript)。在幕后,UpdatePanels通过JavaScript XMLHttpRequest将整个页面发布回服务器。新页面是使用正常页面生命周期生成的,就像回发一样,但只有UpdatePanel内部的部分(以及更新ViewState等所需的部分)才会被发送回客户端。从那里,插入标记时没有可见的闪存或页面状态的中断。

大多数竞争的AJAX工具都倾向于超轻量级的实现,这些实现允许您通过Javascript发布或生成一小部分HTML,我想这是今天的主导方向,尤其是在ASP.NET世界之外。

通过网络发送的数据总量的差异很大 - 请参阅下面的链接。在低流量情况下,它可能没有什么区别,但在像StackOverflow这样的网站的情况下,它肯定会显示在带宽账单上。

所有这一切,我认为说UpdatePanels实际上不是AJAX是不公平的,因为他们通过异步JavaScript发送发布HTML - 这只是一个巨大的,通常很麻烦框架在上面。 UpdatePanels有时会得到糟糕的说唱,但它们提供了非常简单的开发者体验。我经常发现它们在低流量情况下很有用。

更新: Here是一篇文章(旧的但仍然有效),用于检查与服务器之间发送的有效负载UpdatePanel。它还涉及Page Methods,它是一种基于Web Service的轻量级替代UpdatePanels。这是Microsoft AJAX经常被忽视的部分。

答案 1 :(得分:1)

http://msdn.microsoft.com/en-us/magazine/cc163480.aspx

也许这会回答???

我希望。 (也读它)。

在我看来,Control是一个服务器端对象,它使用ajax作为机制,并且呈现ajax来执行客户端。在这个意义上,它不是纯粹的ajax,而是多种解决方案的混合。

:)