你期待已久的ASP.NET Atlas(一)[翻译]

来源:互联网 发布:什么沙发最舒服 知乎 编辑:程序博客网 时间:2024/04/27 14:56

原文地址:http://msdn.microsoft.com/msdnmag/issues/06/07/AtlasAtLast/

        近来开始看Atlas,体验了一下感觉挺不错的,先翻篇文章奉上,有翻的不好甚至有误的地方请大家指正,共同提高!

这篇文章讨论以下几个方面:
1.ASP.NET "Atlas"的介绍
2.Atlas的体系结构
3.客户端和服务器端的控件
4.Atlas和Web服务

        在2005年9月的时候,ASP.NET小组发布了第一个有关ASP.NET中称之为"Atlas"的新特性的社区技术回顾。这个Microsoft.NET Framework 2.0的扩展使开发者能够使用浏览器和服务器的特性更简单地制作出丰富、有交互性的网站。
Atlas提供的丰富功能涉及到Ajax(异步JavaScript和XML),它的名字是用组成它的已有很久的技术的首字母组成的。现代的浏览器里包含了XMLHttpRequest对象,这个在JavaScript中使用的对象能够发出一个到服务器的请求。这个功能允许页面能够响应用户的输入并做一个特殊的不要求整个页面刷新的操作。这个概念总的来说非常简单,但AJAX类库能够减轻写客户端的用于和服务器交互并处理从Web Service返回的XML的JavaScript。
        Ajax试图解决的总的问题归根到底还是HTTP协议本身。HTTP协议是浏览器使用的和服务器交互获得页面并从服务器获得返回的数据的基础。这个协议是无状态的,这意味着保存的用户的输入在页面刷新的时候提交给了服务器。一直以来典型的用户体验是整个页面都被刷新了来得到服务器传回的状态信息。用户在页面上的输入在服务器回传到浏览器的HTML中得到恢复。
        ASP.NET用一个隐藏的view state域来为你处理这个过程。尽管事实上只有页面的一部分需要获得更新,但整个页面的HTML都会被传送到服务器,而且在这个过程中整个屏幕是一片空白。当这个刷新发生的时候,用户不能和页面交互直到浏览器收到新的视图并把它显示出来。AJAX使用XMLHttpRequest这个对象产生一个发送到服务器调用Web服务的请求,而这个过程并不刷新整个页面,以此来改进用户体验。页面上需要更新的部分将被JavaScript直接更改,而JavaScript作出更改是基于收到的XML。用户甚至感觉不到页面的更新正在进行,他能够继续阅读火和页面交互,而同时后台正在进行异步交互。

什么是Atlas?
         ASP.NET的Atlas的作用不是又一个为以客户端为中心的Web程序的AJAX脚本库。Atlas建立在.NET Framework 2.0,它增加了更好的使用客户端JavaScript和XMLHttpRequest对象的支持。它包含了基于服务器的特性,这个特性丰富了现存的ASP.NET程序,Atlas控件和服务使用的客户端脚本库也起到了同样的作用。如图1的体系结构图展示了Atlas的体系结构延伸了客户端和服务器端,它可以被看作制作更加丰富、更加具有交互性的跨浏览器Web程序的主要开发技术。
                                                    
                                                           图1        

        Atlas并没有局限在使用异步的JavaScript请求来更新部分页面的功能上。你将获得看似不切实际的更丰富的客户体验。举个例子,假设有个Web程序创建了一些电影数据。这个程序也许希望能够允许用户去搜索一个指定的男演员。很明显不可能提供一个复杂的包含所有男演员的DropDownList来让用户从里面进行选择,所以程序很可能会分解这个问题。用户很可能被要求选择男演员的名字的首个字母。到服务器的请求将会提供一个一个更可控制的列表,但是这样的用户体验并不怎么好。这个程序可以向用户显示一个TextBox,让用户输入男演员名字的一部分。接着服务器至少有一些数据来减小搜索的范围。这样要好的多,但仍有改进的空间。使用Atlas,你可以提供一个TextBox做动态响应,当用户输入缩小搜索范围时不必等整个页面刷新完毕。
        Figure 2 展示你如何使用Atlas,当用户输入的时候自动完成操作
                                                                
                                                                         图2     
        
         Atlas CTP可以从atlas.asp.net上下载。当安装完毕,它会增加一个额外的供C#和Visual Basic.net的Web开发人员使用的Web Site模板。当你在Visual Web Developer中新建一个Web Site工程,你将会看到一个如图3的对话框。Atlas Web Site包伙了Microsoft.Web.Atlas.dll和一个升级过的Web.config文件,这个Web.config文件的设置使得Web程序能够使用基于Atlas的ASP.NET功能。在现在的发行版本中,Microsoft.Web.Atlas.dll位于bin目录中作为整个程序的本地编译器。
                                                     
                                                        图3      
       
        基于Atlas的程序可以通过从一台开发机器拷贝文件到一台装有ASP.NET 2.0的服务器而方便的进行配置,还不必担心分离的安装的Atlas。安装是在程序级别的,而不是机器级别的。当后续的CTP版本可以使用的时候,它们可以和机器上旧版本的Atlas一起使用,就算一些功能或特性进一步发展了或改变了。这相对于安装是在机器级别更给迁移到更新的版本提供了灵活性。

Atlas的体系结构
         在图1中展示的Atlas的体系结构图中该注意的第一个东西就是它横跨了客户端和服务器端。ASP.NET 2.0增加了一些额外的客户端功能,但这并不包含Atlas扩展的。在体系结构图的右边,注意Atlas服务器端功能建立在ASP.NET 2.0的顶端并扩展了它的功能。同时Atlas也包括了一组新的服务器端控件,用来从浏览器中存取基于服务器的数据和服务。
        在左边你可以看到一个复杂的客户端脚本库,它能独立地被用来写以客户端为中心地JavaScript(这句翻译的不是很好)。这是客户端的基础,经常被Atlas的新特性使用来开发更丰富、改进用户体验的程序。
        在图4中你可以看到在一个Web程序中的典型的客户端-服务器端交互。第一,浏览器请求一个页面,这个请求包含了用户的交互。当用户作出一些动作向服务器请求数据时,非常不幸的整个页面刷新发生了,为的就是更新页面的某一部分,这种行为就不允许用户继续和这个页面进行交互。用户只能停下来等待。
                                                          
                                                                           图4     

        图5展示了使用Atlas方法进行客户端-服务器端交互,这样就不会导致整个页面进行刷新。相对的,初始的html得到了,一系列发到服务器的请求从XML、JavaScript Object Notation(JSON)或html中的片断中得到数据来更新页面。后台的异步请求可以调用Web Services或得到页面的改变,而不会使用户感觉他们必须停下来等待。这些异步请求为后来的服务器回送控制更新过的view state信息,这样当整个页面的刷新是必须的时候,页面上精确的状态就能提交个服务器。
                                                                   
                                                                           图5