使用AJAX技术开发新一代Web应用程序(2)

80酷酷网    80kuku.com

  ajax|web|程序


图2 一个独立桌面应用程序的图解架构。

  该应用程序运行于其自身的进程之中-在其内数据模型和程序逻辑彼此清晰可见。在同一台计算机上运行的该应用程序的第二个实例除了经由文件系统之外无法存取第一个实例的数据模型。典型地,全部程序状态存储在单个的文件中-当该应用程序运行时它被锁定以阻止任何信息的同步交换。


图3 客户端/服务器系统和n层架构图解。

  该服务器提供一个客户可以用之进行交互的可共享的数据模型。客户端仍然维持它们自己的部分数据模型以达到快速存取。多个客户可以与同一个服务器进行交互,而此时在单个对象或数据库行良好粒度级上控制的资源被锁定。该服务器可以是一个单个的进程,就象在90年代以前的早期的传统型客户端/服务器模型或由若干中间件层、外部web服务等组成的现代模型。在任何情况下,从客户的角度来看,服务器具有单个入口点并且可以被认为是一个黑盒子。

  当然,在一现代的N层架构中,服务器将能与例如数据库这样的后端服务器通讯-这导致了中间件层的出现-它们既充当客户端又充当服务器端。典型地,我们的Ajax应用程序位于这个链的一端上-只担当客户端,所以我们可能把整个N层系统看作单个黑盒子-我们把它标记为服务器,以便于我们当前的讨论。

  我的工作表只专注于它自己的存储在本地内存和本地文件系统上的数据。如果它架构良好,数据层和描述层之间的耦合可能相当松散,但是我无法把它通过网络分解与共享。所以,从我们的描述层目标来看,它不是一个客户端。

  当然,Web浏览器是客户端,它连接web服务器并从中进行页面请求。这些浏览器具有一些丰富的功能来管理用户的web浏览,例如后退按钮、历史列表和多页面存储多个文档。但是如果我们把一个特定站点的web页面看作一个应用程序,那么这些通用浏览器控制便不能再关联到应用程序,就象Windows开始菜单或window列表相关于我的工作表一样。

  让我们看一个现代web应用程序。主要因为每个人可能都听说过它,所以我们将选择Amazon-在线书商为例(图4)。现在,我把自己的浏览器指向Amazon站点;因为该站点从我的上次访问能够记得我是谁,所以它先给我显示一个友好的问候、推荐书列表和关于我已购买书的历史信息。


图4 Amazon.com首页。该系统记得我以前访问过该站点,其中可导航的链接是通用信息和私人信息的混合。

  从建议列表中点击一个标题将把我导向一个独立的页面(也即,该屏幕闪烁一下,于是我就失去了几分钟前可以看到的列表)。于是新页面中又会充满各种上下文信息(见图5)。


图5 Amazon.com站点书籍详细资料页面。

  再一次,大量的结合有通用和私人信息的超链接出现。尽管如此,大量的细节与图4所示极为相同-这,由于web浏览器的基于文档的操作,必须被重新转送到每个页面。

  简言之,我向你展示了非常丰富的紧密联系的信息。而且我与这种信息交互的唯一方式是通过点按超链接并且填写文本表单。如果我在浏览站点时的键盘输入过程中睡着了并且第二天才醒来,那么在我刷新全部页面之前我不会知道新的哈里·波特书已经发行。我不可能带着我的列表从一个页面转到另一个页面,并且我不可能缩放该文档的一部分来一次观看多处的内容。 


分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: