Atlas的整体架构概述
下面是Shanku Niyogi和Nikhil Kothari在PDC 2005上演示中展示的Atlas的整体架构图
![](http://blog.joycode.com/images/blog.joycode.com/saucer/488/o_atlas.jpg)
(偷自Nikhil Kothari的PPT)
据Nikhil Kothari,Atlas的设计宗旨不是要成为普普通通的AJAX类库,而是成为一个跨越客户端和服务器端开发以及整合两者交互的一个整体应用框架(end-to-end application framework),它允许开发人员,既可以用XML声明的方式,也可以用脚本编程的方式,很快地集成组件,并且使得脚本功能与ASP.NET应用的集成既整洁,又不让人觉得唐突。
Atlas提供了一个客户端的框架和服务,主要包括
1。浏览器兼容层,把浏览器之间的差异封装出来,以利于其他层次的功能的浏览器独立性,目前支持IE,Safari和Firefox
2。脚本内核,包括了一个Javascript的整套类体系,允许你使用标准OOP里的构造,譬如,命名空间,类,接口,继承,枚举,代理(delegate)等等。目的是要提供一个机制把数据,逻辑和行为封装成类,使得开发人员可以象和其他编程语言一样来做脚本开发
3。基类库,受.NET框架启发,提供了StringBuilder, Debug, Event,和 IDisposable等方便的基础类型,同时通过WebRequest, WebResponse类提供了一个基于XMLHTTP 的客户端networking层,在上面可以通过MethodRequest 与aspx和asmx等服务端服务进行交互。也提供了序列化,特别是JSON 序列化器。该类库也提供了可以和服务器端相应服务集成的Profile 和认证服务
4。组件模型和UI框架,引进了可以自描述本身对象模型的组件的概念,这些模型可以参与一个顶层的Application类管理的生命周期机制,可以通过以声明或编程的方式建立,可以通过绑定以及事件的形式来传输数据和交互。UI框架提供了与DHTML UI元素相关的控件,以及如何给这些控件附加行为的机制,譬如象Drag/Drop以及对输入控件数据的验证等等。
5。控件和组件,提供了象计时器(Timer)和计数器(Counter)这样的组件以及象ListView和地图控件等的控件
Atlas也提供了相应的服务器端基础设施,
1。服务器控件框架,定义了一个新的控件ScriptManager来管理传回到客户端的脚本以及由服务器控件生成的XML-脚本标识。服务器控件也可以通过实现 IScriptComponent来参与请求处理,同时,还提供了与客户端组件模型类型相对应的服务器端对象
2。网络服务桥,允许客户端脚本访问普通的网络服务(asmx)以及Indigo风格的服务(svc),也可以直接访问网页内声明的WebMethod,这是通过象下面这样的类似声明
<script src="MyService.asmx/js" />
由服务自动产生javacript代理类来实现的,同时提供了实现JSON协议调用服务器端服务的基础设施
3。应用服务桥,通过网络服务桥提供了ASP.NET的几个应用服务,譬如可以通过成员服务做用户认证,以及通过Profile服务访问/更新用户数据等
详见Nikhil Kothari的blog以及下面两个ppt
PRS312 ASP.NET: Future Directions for Developing Rich Web Applications with Atlas (Part 1)
PRS420 ASP.NET: Future Directions for Developing Rich Web Applications with Atlas (Part 2)