如题, 准备造个 servlet model 和 controller 间的轮子,为啥不用 struts 或 spring mvc 等 mvc 框架? 貌似一下说不清,主要还是考虑的性能,以及现有的模块的特殊性 。
首先,就是要考虑如何映射和实例化 action / controller, 单实例还是多实例?我偏向 单实例异步。咱们要的就是效率。
如何实例化调用 action 呢? 还是用反射吧,我看tomcat6 的源码,里面都用了反射。不过每个request 都用到反射? 先写到这了,希望大家多提意见。
附:struts1 vs struts2
struts2.x是线程安全的,每一个对象产生一个实例,避免了线程安全问题;而struts1.x在action中属于单线程。
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题,前提是在 jdk1.5 +)
首先,就是要考虑如何映射和实例化 action / controller, 单实例还是多实例?我偏向 单实例异步。咱们要的就是效率。
如何实例化调用 action 呢? 还是用反射吧,我看tomcat6 的源码,里面都用了反射。不过每个request 都用到反射? 先写到这了,希望大家多提意见。
附:struts1 vs struts2
struts2.x是线程安全的,每一个对象产生一个实例,避免了线程安全问题;而struts1.x在action中属于单线程。
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题,前提是在 jdk1.5 +)