对Maverick的示例Calendar的分析
Calendar分析
ControllablePage.Reader->AspxController.Render->CommandBase.RunView ->ViewWithTransforms.Go->TrivialView.Go->DocumentTransformStep.Go ->MaveruckContext.NextStep->输出页面
Dispatcher继承IHttpHandler,作为前端控制器
Maverick实现把当前页面输出在HttpContext中,然后在Reader方法中实现Server.execute(URL),在URL实现对前面的内容的附加
总的说Maverick是有两次执行页面的
1.ControllablePage.cs
是Maverick controllers控制器,继承page并重写Reader实现内容的输出。
2.AspxController.cs
把第一次的页面解析的内容放在StringWriter中,并在Application中检查类Dispatcher,Dispatcher是框架的命令处理核心,在整个程序第一次执行进行初始化,然后保存在Application中
3.Dispatcher.cs
加载xml配置文件,配置文件的格式如下
<maverick version="2.0" default-view-type="document" default-transform-type="document">
<commands>
<command name="Default.aspx">
<view name="success" type="trivial">
<transform path="~/Wrapper.aspx"/>
</view>
<view name="april" path="~/April.aspx">
<transform path="~/Wrapper.aspx"/>
</view>
<view name="button" path="~/Button.aspx">
<transform path="~/Wrapper.aspx"/>
</view>
</command>
</commands>
</maverick>
并生成Loader实例
4.Loader.cs
SetupCoreModules()
定义基本的tranforms
document类由DocumentTransformFactory工厂处理
xslt类型由XsltTransformFactory工厂处理
定义基本的Views
xml类型由XmlSerializingViewFactory工厂处理
TrivialViewFactory.cs
5.MasterFactory.cs
该工厂被ViewFactory和TransformFactory调用,负责生成view与transform对象。
6.ViewRegistrySimple.cs
生成对于command的view并保存在哈希表中
7.CommandFactory.cs
根据<command>节点的配置生成相对应的Command类,根据节点的样式加载Control与views,根据views的数量生成CommandMultipleViews 或 CommandSingle
8.TrivialView.cs
实现真正的将数据写到流里面,数据源可以是string,StringBuilder,TextReader,XmlNode否则发生异常
9.TrivialViewFactory.cs
顾名思义是生成TrivialView实例
10.NullView.cs
简单的继承IView没有如何具体实现也没有任何扩展
11.NullViewFactory.cs
顾名思义是创建NullView的实例
12.LastStep.cs
没有后来的请求,最后数据的输出
13.NullController.cs
不做事情的控制器
14.ControllerFactory.cs
根据控制器节点信息用反射创建控制器,如果没有相应的节点创建一个NullController
ControllablePage.Reader->AspxController.Render->CommandBase.RunView ->ViewWithTransforms.Go->TrivialView.Go->DocumentTransformStep.Go ->MaveruckContext.NextStep->输出页面
Dispatcher继承IHttpHandler,作为前端控制器
Maverick实现把当前页面输出在HttpContext中,然后在Reader方法中实现Server.execute(URL),在URL实现对前面的内容的附加
总的说Maverick是有两次执行页面的
1.ControllablePage.cs
是Maverick controllers控制器,继承page并重写Reader实现内容的输出。
2.AspxController.cs
把第一次的页面解析的内容放在StringWriter中,并在Application中检查类Dispatcher,Dispatcher是框架的命令处理核心,在整个程序第一次执行进行初始化,然后保存在Application中
3.Dispatcher.cs
加载xml配置文件,配置文件的格式如下
<maverick version="2.0" default-view-type="document" default-transform-type="document">
<commands>
<command name="Default.aspx">
<view name="success" type="trivial">
<transform path="~/Wrapper.aspx"/>
</view>
<view name="april" path="~/April.aspx">
<transform path="~/Wrapper.aspx"/>
</view>
<view name="button" path="~/Button.aspx">
<transform path="~/Wrapper.aspx"/>
</view>
</command>
</commands>
</maverick>
并生成Loader实例
4.Loader.cs
SetupCoreModules()
定义基本的tranforms
document类由DocumentTransformFactory工厂处理
xslt类型由XsltTransformFactory工厂处理
定义基本的Views
xml类型由XmlSerializingViewFactory工厂处理
TrivialViewFactory.cs
5.MasterFactory.cs
该工厂被ViewFactory和TransformFactory调用,负责生成view与transform对象。
6.ViewRegistrySimple.cs
生成对于command的view并保存在哈希表中
7.CommandFactory.cs
根据<command>节点的配置生成相对应的Command类,根据节点的样式加载Control与views,根据views的数量生成CommandMultipleViews 或 CommandSingle
8.TrivialView.cs
实现真正的将数据写到流里面,数据源可以是string,StringBuilder,TextReader,XmlNode否则发生异常
9.TrivialViewFactory.cs
顾名思义是生成TrivialView实例
10.NullView.cs
简单的继承IView没有如何具体实现也没有任何扩展
11.NullViewFactory.cs
顾名思义是创建NullView的实例
12.LastStep.cs
没有后来的请求,最后数据的输出
13.NullController.cs
不做事情的控制器
14.ControllerFactory.cs
根据控制器节点信息用反射创建控制器,如果没有相应的节点创建一个NullController

浙公网安备 33010602011771号