该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-03
edokeh 写道 LZ其实不必考虑兼容servlet,本来你这套东西跟servlet就不是一路,你也不会指望以前用servlet的人会迁移到douyu上,所以,果断抛弃servlet,douyu会有更广阔的发展空间 douyu兼容servlet是非常容易的,douyu的基本设计原则是鼓励开发者面向接口编程, 开发者写程序时只要知道底层框架提供了那些接口, 然后在运行时底层框架会把这些接口的具体实现注进来, javax.servlet和javax.servlet.http这两个包中基本上都是一些接口, douyu.mvc也是主要由接口组成。 反观playframework框架,看看它的api文档吧,一大堆的类,非常不直观, api文档完全没有区分框架用户和框架开发人员,有些api用户根本不需要了解。 zdmcjm 写道 我个人是比较喜欢prototype模式的controller,所以play也不算我满意的框架,如果douyou只支持singleton,我的兴趣就不太大了,哈。 另外套个近乎,都是讲桂柳话的。 这个很容易实现的,在@Controller中加个属性就可以了(比如@Controller(singleton=true)). 其实,完全可以不用任何@Controller这样的注解的, 可以默认建个目录比如controllers,所有在这个目录中的类都默认是Controller, 后来我发现这种方式不灵活,如果你要为某个Controller添加一些额外的功能: 比如Controller只能处理POST请求、比如要进行权限认证、比如有最大线程限制, 这时又不得不搞个配置文件在里面配这些参数,这时又回到了在web.xml中配servlet的方式, 所以用注解是最好的办法,注解就是用来设置参数并调整Controller的行为的, 比如@Controller(httpMethods=HttpMethod.POST)就可以做到让这个Controller的所有Action都只处理POST请求, 再比如@Controller(maxThreads=50),如果这个Controller的某个Action由于执行了某个操作被堵住了, 这个maxThreads参数就能保护系统资源不会被这个Controller耗尽,最多只允许50个线程在并发执行这个Controller, 甚至可以做到按当前系统的服务质量来动态调整所有Controller的行为。 |
|
返回顶楼 | |
发表时间:2011-06-03
最后修改:2011-06-03
AlwenS 写道 楼主 写道 最炫的功能:
可以在JSP、Velocity、FreeMaker中直接访问控制器Action中的本地变量: 为啥没人吐槽这个功能呢? 的确很炫,居然可以访问局部变量,应该是对javac动了手脚了,使bytecode记录了更多信息了吧?对性能有影响不? 想问下,这个局部变量的使用范围,会不会和其他的全局变量像冲突,另外是不是会把嵌套方法中的局部变量也当做本地变量来使,如果是这样的话,是否会有命名冲突的问题哦,这个变量值以谁为准啊。 |
|
返回顶楼 | |
发表时间:2011-06-03
yin_bp 写道 楼主 写道 最炫的功能:
可以在JSP、Velocity、FreeMaker中直接访问控制器Action中的本地变量: 想问下,这个局部变量的使用范围,会不会和其他的全局变量像冲突,另外是不是会把嵌套方法中的局部变量也当做本地变量来使,如果是这样的话,那就悲剧了。 根据变量可见性规则,如果局部变量跟全局变量(比如实例变量)同名时,局部变量是会把实例变量覆盖掉的, 我觉得也是可以在模板中加this前缀来解决这些问题,就如同你在java代码中为了访问实例变量加了this一样, 嵌套方法中的变量不会加进来的, 如果在out方法后新定义了一些局部变量,也不能在out(viewFileName)对应的模板中访问的。 最简单的理解是: 这个功能,你可以想像成把模板文件中的每一行内容都内联到java代码中了,像这样: out.println("....." + localVarName + "...."); out.println("....." + this.instanceVarName + "...."); |
|
返回顶楼 | |
发表时间:2011-06-03
引用 异步Action
@Controller public class AsyncTest { public void asyncAction(HttpServletRequest request) { 哦,再请教两个问题: 1.douyu的控制器是不是只能有一个控制方法,如果允许多个方法的话,那么异步调用为每个方法请求公用一个线程池还是单个线程池。 2.douyu的异步action是每个action分派一个线程池,还是全部采用一个线程池 |
|
返回顶楼 | |
发表时间:2011-06-04
yin_bp 写道
douyu的控制器是不是只能有一个控制方法
yin_bp 写道
如果允许多个方法的话,那么异步调用为每个方法请求公用一个线程池还是单个线程池。 2.douyu的异步action是每个action分派一个线程池,还是全部采用一个线程池
|
|
返回顶楼 | |
发表时间:2011-06-04
最后修改:2011-06-04
呵呵,解释的非常清楚,赞
不过,异步处理最大的挑战在于资源冲突、死锁以及超时处理等问题,综合考虑起来还是挺复杂的。 |
|
返回顶楼 | |
发表时间:2011-06-08
呵呵,保留意见,不过还是支持开源洞洞
|
|
返回顶楼 | |
发表时间:2011-06-12
好,很好,very good
|
|
返回顶楼 | |
发表时间:2011-08-03
过了2个月了才看到斗鱼有新版本了。。晕
09年作者发布第一个帖子时就关注斗鱼,时隔2年再看这篇,感觉作者从理想上升到现实了,而且从作者的回复可见作者对比09已经风轻云淡,异步action,长连接,很是惊喜,支持作者,做事情最精彩的莫过沿途风景,结果不过是过眼浮云罢了,人还是自私点好,对得起自己就行。 |
|
返回顶楼 | |
发表时间:2011-08-03
哥们,继续支持你,我09年的时候看到了发布了一个斗鱼,到目前2年看了。继续加油。
|
|
返回顶楼 | |