分享
 
 
 

网站基础架构设计思路I(重回程序员角色,想不到感觉还是这么爽)

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

第1章 概述第2章 基础结构描述2.1 目标网站基础结构设计的目标,是建立一个稳定高效、可配置、可扩展的网站架构,同时为网站的功能开发提供一个开放的、易用的工具集。

2.2 设计思想根据网站基础结构的目标,设计选择xml + xsl作为数据呈现标准,选择xmlrpc为客户端-服务器端通信协议。

所以选择xml + xsl作为数据呈现标准,是为了适应网站大批量数据请求的情况下,将数据呈现逻辑移交给客户端浏览器进行处理,网站服务器可以专注与业务逻辑的处理。

选择xmlrpc作为客户端-服务器端通信协议,一方面因为xmlrpc已经开始为大多数浏览器支持,另外也因为服务器端将xml作为数据输出格式,那么使用xmlrpc作为客户提交的手段是顺理成章的。而且xmlrpc还可以提供无刷新提交和获取数据的使用体验。

2.2.1 逻辑处理部分网站的基础结构,参考了java的开源项目《struts》以及《Game Engine》的设计思路,采用action作为业务逻辑处理工具,使用xml的配置文件作为业务逻辑的描述,即业务逻辑配置文档,服务器端的主要责任就是当用户发起请求时,将用户的请求映射到业务逻辑配置文档的某个Action配置节,读取信息并依照该小节的体现的业务逻辑处理用户请求,然后将处理结果保存在Action Form实体中,转交给视图,视图根据Action Form中的信息以及视图配置文档所设定的数据转换格式,将数据转换成可以接受的xml文档格式,连同负责呈现该xml文档结构的xsl文档一同发送给用户的浏览器客户端。

业务逻辑配置文档示例如下:

<module name="moduleA" onerror="err.view">

<action pattern="/login" name="actionA" type="action.ContainerAction">

<action name="actionAA" type="action.CommonAction1">

<forward on="ruleA" path=""/>

<forward on="ruleB" path=""/>

</action>

<action ref="actionD"/>

<forward type="redirect" on="ruleOK" type="returnUrlForward"/>

<forward type="transfer" on="ruleC" path="returnUrl.do"/>

<forward type="transfer" on="ruleD" path=""/>

<forward type="transfer" exceptionType="" path=""/>

</action>

<action pattern="/login2" name="actionD" type="action.ActionD">

<forward on="ruleA" path=""/>

<forward on="ruleB" path=""/>

</action>

<form name="actionA" type="form.ActionAForm">

<parameter name="" type="" validator=""/>

<parameter name="" type="" validator=""/>

</form>

<rule name="ruleA" type="rule.IsMan">

<input-param name="sex" select=""/>

</rule>

<rule name="ruleA" type="rule.Equal">

<input-param name="param1" select=""/>

<input-param name="param2" value="1"/>

</rule>

</module>

在上面的文档示例中,作为业务逻辑的体现,Action配置小节是最重要的一个环节,在该配置小节中,描述了用怎样的方法组成一个逻辑流程来处理用户的请求。每个方法在运行时对应的就是一个Action元素,每个Action元素都对应在系统内置的商业函数库中的一项,即一个Action类,另外Action元素也描述了自己的ActionForm的类型。ActionForm类型是用于收集客户端提交数据和其他信息,组成Action的输入参数集合。ActionForm类型由Action元素的名字确定。Action和ActionForm应该是一一对应的关系。

Action元素中的Forward元素用于表达,当action的输出满足某个条件时,跳转到另一个Action配置小节或直接跳转到一个视图进行数据呈现处理。Rule 元素描述了对条件判断的逻辑处理。

2.2.2 视图呈现部分视图呈现,即将用户请求通过action的处理后,将生成的输出数据(ActionForm)转换成适当的xml数据格式,连通与此文档相关联的xsl文档发送到客户端进行呈现的过程。

在数据呈现部分,xsl是w3c的标准,xsl依据一定的文档格式,编写数据呈现模板,把无格式的xml数据转换成含有格式的、浏览器可识别的html结构。

Xsl所解释的文档格式必须具有确定性,即xsl的输入必须是符合一个特定xml schema的well form & validate的xml文档。所以如何将ActionForm中的信息,正确的转换到相应的xml schema是视图呈现部分的关键。

第3章 配置文件结构3.1 文件目录结构所有配置文件,包括模块配置文件以及视图配置文件,存放在网站应用程序的config目录下。此目录必须被设置为不可匿名访问。以防止被用户读取。

所有xsl文件存放在应用程序目录的xsl目录中。

所有模块配置文档,分别保存在 config 目录中。

3.2 命名规范1、 按照模块名称,网站应用程序目录中的 config目录里存在唯一的一个以模块名为文件名字,已.module为扩展名的业务逻辑配置文档。一个模块必须存在且只能存在一个.module文件。

2、 视图配置文档的扩展名必须为.view。

3、 所有自定义视图标记,必须配置在名为taglib.config的文件中。

3.3 模块配置文件3.3.1 moduleModule元素描述了网站系统的一个子系统,一个子系统能够处理多个用户请求。

Module元素具有以下属性:

属性名

可能值

说明

name

文本

模块名称

onerror

任何符合路径格式的文本字符串

缺省的错误处理视图位置

Module元素可以具备的子元素包括

l action

l form

l rule

3.3.2 actionaction元素描述用于处理用户请求的一个商业函数,即一个Action类型,以及这个Action处理后对应的跳转逻辑。

action元素可能具有的属性包括:

属性名

可能值

说明

name

文本

Action名称

pattern

有效的正则表达式。

用于匹配用户请求路径的正则表达式。当一个Action元素处于另一个Action内部时,此属性无效。

type

有效的类名称

Action类型

ref

一个外部Action的名字

当指定了此属性,则等同于将名字等于此属性值的另一个action插入当前位置,形成嵌套关系。

action元素可以带有以下子元素:

l action

l forward

3.3.3 formform元素描述用于帮助Action类处理输入参数和输出参数的类型。

form元素可能具有以下属性:

属性名

可能值

说明

name

文本

名称

type

有效的类名称

类型

Form元素可以包含以下子元素:

l parameter

3.3.4 rulerule元素标识一个判断规则,网站程序根据rule的判断结果来选择某个forward将被执行。

rule元素可能具有以下属性:

属性名

可能值

说明

name

文本

名称

type

有效的类名称

类型

Rule元素能包含一下子元素:

l input-param

3.3.5 forwardforward元素规定了当一个action执行完毕后的跳转规则。

forward元素可能包含以下元素:

属性名

可能值

说明

on

某个rule的名字

确定用于判断此forward被选择的规则

class

有效的类名称

类型

type

跳转类型:

redirect

transfer

redirect标识跳往另外一个action

transfer表示转向视图处理。

path

一个url

action或视图的位置。

exceptionType

一个exception的有效类型名

如果action处理出现异常后依据异常跳往的视图或action位置。

3.3.6 parameter用于规定一个form的参数。以及参数的类型,校验类型。

parameter可能具备的属性包括:

属性名

可能值

说明

name

文本

属性名

type

一个有效的类型名

属性的类型。

validator

一个有效的类型名

用于校验此parameter值是否有效的类型名字

3.3.7 input-paraminput-param元素用于描述某个rule的输入参数,在创建rule的时候传入其构造函数。input-param必须按照rule的输入参数顺序书写。

input-param可能包含以下属性:

属性名

可能值

说明

name

文本

属性名

type

一个有效的类型名

属性的类型。

select

文本

取值的位置。即某个参数在form中的名字

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有