随笔-8  评论-4  文章-4  trackbacks-1
  2008年6月9日

AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX

  这是我们见过的混淆最多的一组概念。不过当去年AJAX技术如火如荼,AJAX框架层出不穷,而微软又推出ASP.NET AJAX框架之后,这四个概念之间的混淆也愈发严重起来了。我们经常能看到这样的问题:

  • 我在用AJAX技术时不知道怎么在UpdatePanel里……
  • 我用AJAX.NET框架调用Web Service时……

  这是非常典型的概念混淆,上面两句话的AJAX与AJAX.NET都应该使用ASP.NET AJAX替换。我们在学习AJAX相关技术时需要理解以下概念:

  AJAX是Asynchronous JavaScript and XML缩写。这个概念代表的是一种技术,当您在说“我在项目中使用了AJAX技术时”,只是代表了您使用客户端XMLHttpRequest对象与服务器端进行异步通信。不过因为随着AJAX技术的运用往往会带来丰富的客户端效果,因此对AJAX技术的广义理解也可以认为这是一种操作客户端DOM而带来丰富效果的技术。

  AJAX框架是一套辅助开发人员使用AJAX技术的代码包(库,etc.)。一个AJAX框架的目的一般是对XMLHttpRequest对象的使用进行封装,并提供一些操作DOM元素或者实现特殊效果的“捷径”。成熟的AJAX框架有很多,它们可以被分为“以客户端为中心”和“面向特定服务器技术”两大类。前者的优秀代表有(排名不分先后):PrototypejQueryMootoolsYUIDojoEXTJS 2.0等等;而后者的典型代表有Anthem.NET、AJAX.NET、MagicAjax.NET和微软ASP.NET AJAX(最初为Atlas)(这几个对比参考);当然,也有优秀的AJAX框架面向其他服务器技术,呵呵这个我还没有了解。

  AJAX.NET (Professional)是ASP.NET平台上著名的AJAX框架,诞生于2005年2月(虽然正式命名为AJAX.NET则是在两个月之后),作者为Michael Schwarz。同年10月,Michael为AJAX.NET提供了更丰富的功能(主要是安全性方面),并将其改名为AJAX.NET Professional。AJAX.NET提供的最主要的(也是唯一)的功能就是异步调用服务器端方法,可谓非常纯粹的“基于数据”的AJAX使用方式。这个框架是一个个人作品,有支持.NET 1.1和2.0的版本,它并不属于微软官方,目前已经停止更新。

  ASP.NET AJAX的Code Name为“Atlas”,在CTP向Beta版转移时曾经发生过翻天覆地的变化。ASP.NET AJAX中包含了UpdatePanel等控件,可以非常透明地为现有的ASP.NET WebForms应用程序添加AJAX效果。此外还提供了客户端异步调用Web Services的方法,使开发人员也能够使用面向数据的方式使用AJAX技术。值得一提的是ASP.NET AJAX的“附属品”相当丰富。例如ASP.NET AJAX名为“Microsoft AJAX Library”的客户端部分是一个纯客户端AJAX框架,提供了面向对象类型系统、浏览器兼容层、异步通信层等多种基础组件;ASP.NET AJAX的开源扩展包“AJAX Control Toolkit”包含了数十个可以直接使用的AJAX服务器端控件,这样开发人员能够轻松地添加丰富的客户端效果。同时,官方还为ASP.NET AJAX提供了“非正式”地扩展包,其中的History等优秀控件也将加入未来版本的ASP.NET AJAX框架中。ASP.NET AJAX是官方出品的AJAX框架,目前已经被集成到ASP.NET 3.5中去了,因此其版本号也从ASP.NET AJAX 1.0一下子“跃升为”ASP.NET AJAX 3.5。如果您看到了这些版本号也请不要疑惑,其实ASP.NET AJAX 3.5相对于ASP.NET AJAX 1.0来说只是修补了一些细小bug,几乎没有任何变化。

posted @ 2008-06-09 19:01 Alex’Sky 阅读(89) 评论(0) 编辑
Client.htm页面代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    
<title>客户端</title>
        
<script type="text/javascript">
        
var XmlHttp = new ActiveXObject("Microsoft.XMLhttp");
        
function sendAJAX()
        
{
            XmlHttp.Open(
"POST","receive.aspx",true);
            XmlHttp.send(
null);
            XmlHttp.onreadystatechange
=ServerProcess;
        }

        
function ServerProcess()
        
{
            
if (XmlHttp.readystate==4 || XmlHttp.readystate=='complete')
            
{
                document.getElementById('nameList').innerHTML 
=XmlHttp.responsetext;
            }

        }

        setInterval('sendAJAX()',
1000);
        
</script>
    
</head>
    
<body>
        
<div id="nameList"></div>
    
</body>
</html>

Receive.aspx CodeBehind代码:
protected void Page_Load(object sender, EventArgs e)
    
{
        PerformanceCounter myMemory 
= new PerformanceCounter();
        myMemory.CategoryName 
= "Memory";
        myMemory.CounterName 
= "Available KBytes";

        
string txtResult = "-->当前可用内存:" +myMemory.NextValue().ToString() + "KB";
        Response.Write(DateTime.Now.ToLongTimeString() 
+ txtResult);

    }
posted @ 2008-06-09 17:59 Alex’Sky 阅读(117) 评论(0) 编辑
昵称:Alex’Sky
园龄:5年4个月
粉丝:4
关注:1
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

搜索

 
 

常用链接

随笔分类

随笔档案

文章分类

相册

A.Web Sites

我的好友

友情博客

最新评论

阅读排行榜

评论排行榜

推荐排行榜