简单谈谈 SimpleFramework 系统架构
工作机理
图:基于过滤器(/后处理)的Web应用框架工作原理
Web应用中,无论服务器端采用(Java EE/.NET),客户端的请求经Web或应用服务器解析后,最终返回客户端的响应内容主体都是HTML(含Javascript/CSS等)。由此,解决问题的契机就是在响应返回客户端(/浏览器)之前,“拦截”响应,解析其中HTML,并进行“再处理”,此即“后处理”应用模式。其实现方案可有服务器端(过滤/拦截器等)和客户端(插件等)两种。在Java EE体系下,支持Servlet 2.3的各种应用服务器(Weblogic/Websphere/JBoss/Tomca等)都有“过滤器(Filter/Interceptor)”机制,恰好为本框架的实现奠定了技术基础。
框架模式
从上图可知,基于过滤器的后处理模式,实际上是利用过滤器机制对MVC2的扩展,是两个MVC2模式的有机组合:先由“Filter”作为“Controller”,以另一MVC2作为其“虚模型”,再将此“Model”分解为一完整的MVC2,分别由原Model和作为Post-View(基于XML定义)的解析器(Parser)及逻辑处理器(HandleClass)的Post-Controller构成。
遵循标准
图:基于过滤器(/后处理)的Web应用框架工作原理
Web应用中,无论服务器端采用(Java EE/.NET),客户端的请求经Web或应用服务器解析后,最终返回客户端的响应内容主体都是HTML(含Javascript/CSS等)。由此,解决问题的契机就是在响应返回客户端(/浏览器)之前,“拦截”响应,解析其中HTML,并进行“再处理”,此即“后处理”应用模式。其实现方案可有服务器端(过滤/拦截器等)和客户端(插件等)两种。在Java EE体系下,支持Servlet 2.3的各种应用服务器(Weblogic/Websphere/JBoss/Tomca等)都有“过滤器(Filter/Interceptor)”机制,恰好为本框架的实现奠定了技术基础。
- 处理流程
- 拦截响应中HTML。
- 组件XML元数据解析。
- 业务Handle类执行。
- 组件代码生成及渲染。
- 复合HTML生成及响应。
- 应用加载
<servlet>
<servlet-name>startup</servlet-name>
<servlet-class>net.simpleframework.web.SimpleWebApplication</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<filter>
<filter-name>actionFilter</filter-name>
<filter-class<net.simpleframework.web.page.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>actionFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.simpleframework.web.page.PageEventAdapter</listener-class>
</listener>
<servlet-name>startup</servlet-name>
<servlet-class>net.simpleframework.web.SimpleWebApplication</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<filter>
<filter-name>actionFilter</filter-name>
<filter-class<net.simpleframework.web.page.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>actionFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.simpleframework.web.page.PageEventAdapter</listener-class>
</listener>
- 原始请求-响应
- 响应拦截
- 元数据解析
- Handle执行
- 组件渲染
- 重构HTML
框架模式
从上图可知,基于过滤器的后处理模式,实际上是利用过滤器机制对MVC2的扩展,是两个MVC2模式的有机组合:先由“Filter”作为“Controller”,以另一MVC2作为其“虚模型”,再将此“Model”分解为一完整的MVC2,分别由原Model和作为Post-View(基于XML定义)的解析器(Parser)及逻辑处理器(HandleClass)的Post-Controller构成。
遵循标准
- 后端实现技术为Java ,前端实现技术为HML+Javascript+CSS,皆为业界标准;
- 未创建自己专有语法、标签或其他,遵循的标准就是JSP\Serverlet、Taglib等Java EE的原生或固有标准;
- 采用了类似XUI的XML式组件声明,但语义更加简洁;
- 不是“重新发明轮子”,可看做WEB过滤器的MVC扩展实现;
- 以独特的AJAXRequest组件对象、仿真HTTP Client以及代码自动生成技术,内置AJAX引擎(缺省为Prototype)实现无Javascript的AJAX应用;