在《Ajax in Action》这本书里,the role of the server这一章节被看作了Ajax的核心技术来介绍,可见其重要性。哪在Ajax眼里究竟什么是server的role呢?
从最顶上往下看,答案是:Server的角色一是负责把application送到browser;角色二是和client的交互,接受请求,把请求的结果数据返回给client。
如果把上述如此简洁的答案看作是金字塔的最顶端,那支撑最顶端的下面部分是怎样的呢?我们要先看看在web里,Server构架的几种形式:
1. 最简单的一种方式是没有构架。browser过来的每个page请求都被直接处理,没有中间层存在,数据处理是直接和数据库发生的。
2. 基于Model2 workflow的构架。应该说这是一种比第一点更层次化,更优的构架。其中,业务流程被组织成workflow的形式,而workflow的处理引擎由一个controller来承担。controller并不直接访问数据库,而是由一个业务数据中间层来做接口。这种构架的设计模式是MVC的一种,在controller接收请求,处理请求,返回结果的时候,其page内容的生成由专门的一个View/pages模块负责完成。
3. 基于组件的构架。在server这一侧,application被分为不同的组件,每个组件即代表在browser上不同的业务组件模块。在这种构架下,server端同样有一个centeral controller,由它来统一接口browser,并把请求分发给相应的组件controller。在这里,每个组件有自己的controller来处理它所负责的业务逻辑,比如数据库访问,结果页面的生成。在请求处理完毕后,由各自组件负责将结果页面返回给browser。
4. 面向service的构架。这种构架以service为导向,和browser的交互以data中心,而不是content,在此构架下,Ajax client更像一个application,具备一般application所有的独立性。以service为导向,可以把业务实现的重用性,耦合性做得更好,和上述构架相比,具备更大的灵活性,这种构架也是最适合Ajax发挥其特性。
(待续)