论坛首页 AJAX版 Buffalo

Buffalo2.0 不见的prototype.js。却惊现Ruby.

浏览 2983 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2007-04-28
刚刚下载了2.0版,粗粗看了一下,好像比1.2简化多了。

我的项目还只是用1.1,当时不想转为1.2的原因就是感觉麻烦,看到1.2都用prototype.js做为基本脚本框架,感觉有DWR那样复杂化的趋势。而且考虑到安全的原因,渐渐的不敢大面积的用AJAX了,特别做表单提交方面。目前只是基本的用来做信息展示,觉得buffalo还是不错了选择。

但很是希望能有这两个功能:
1。不知有没有支持动态生成的脚本能够执行的。感觉每次都要把生成的的东东放在页面只能在同步时才能运行脚本。
2。就是在server端的那个servlet里增加一个验证,只要来源于外网或者说恶意的链接能够自行的让使用都自行增加系统钩子。这样估计能增加一些安全性。
另外,建议buffalo-service.properties能够实现让使用者选择是否常驻内存。虽然目前这个使用者可以自行改动。呵呵。
不过,在buffalo-2.0-src\buffalo-core\script这里去看到testserver.rb的影子。很想了解这个ajax的东东怎么与ruby挂上钩,虽然现在ruby很火,本人也买了本Pro Ruby正在学习当中,可是感觉在项目中没有多在的用处,于是进展很慢。倒是很想知道作者用rb在这个框架里是做什么用了。。。
明天好好再测试一下2.0是不是性能提高了30%,呵呵。
   
时间:2007-04-28
呵呵,只会是更简单,不是更复杂。buffalo在添加新特性方面一直很慎重,最不希望看到的是成为一个庞大的怪物。

Buffalo 2.0客户端JS代码还是依赖prototype的,主要用到了prototype提供的类和继承机制,以及方便的对DOM元素的访问。

1 动态生成的脚本能够执行?在buffalo里面没有动态生成的代码,不明白"每次都要把生成的的东东放在页面只能在同步时才能运行脚本"

2 服务器端安全是在2.1版本之前要解决的问题(很可能在2.0.1中会解决)。之前提过方案,但之前的开发工作很大程度上集中在实现新的协议和提升性能上。后续的工作主要会集中这些方面。

buffalo-service.properties是否常驻内存?是文件常驻内存还是里面的service常驻(单例?)?

Ruby脚本是用来启动一个HTTP Server, 方便于javascript的单元测试。然而默认的WEBrick不支持HTTP Post,暂时还想不到好的办法来解决。
   
0 请登录后投票
时间:2007-05-01
不好意思,那天没认真看,的确有prototype.js

1。因为目前项目有用velocity模块,有个麻烦的地方就是prototype.js取值$("form")这样取值,与velocity模板写法相类似,就怕没注意混在一起了,暂时是没发现有什么冲突的地方。

2。动态生成的脚本能够执行,我是指比如说我以前用jTree生成一个动态树,我当时想放在java方法里拼javascript字符串来实现,结果在用异步时,他只当做字符串来显示,不过这个问题不大,我用了velocity之后全部放在vm模板里来拼写脚本了。

3。安全方面如果有更好的方案那是最好不过了。目前我只考虑在那个公共的BuffaloServlet里加上项目里的权限安全验证。但是还没有想好如何解决用户用工具之类狂刷页面带来的BuffaloServlet的负担。不知道有没有更好的方法来减少恶意操作。就像路由器一样,可以把恶意的链接直接(类似)转发到垃圾桶,而不是返回错误的信息给用户。

4。buffalo-service.properties 单例应该是也可以了。不过我当时在做了时候有点很麻烦,你在服务端的servlet里把异常抛了出来。所以在Eclipse里只要修改一个类(我是用weblogic在Eclipse直接调试)那个右上角马上就异常了,不过我在jar包里用try把那个给包装了一下,这样不管怎么改类,保存一下,刷新页面那脚本都不会出错。

5。就是有没有可能在异步的时候增加一个异步对像队列机制呢。像现在比如我有4个select下拉单,进行动态的拉,用异步就根本无法处理,而在创建new Buffalo()时,都是为每个下拉单创建一个(就是在一个funciton里都要new Buffalo(),这样才能保证返回的数据不被替代)。如果有个队列机制,它应该会自动等待上一个的数据返回接着触发下一个的new Buffalo()脚本对像。

6。不知可以供现一些RUBY的东东,怎么做测试,谢谢,哈哈。
   
0 请登录后投票
时间:2007-05-03
回答第五条:

早在1.2版本buffalo已经是队列处理了,只要是同一个buffalo对象,他就会按照写的顺序来进行调用,在上一条remoteCall返回之前,下一条不会执行。例如:

var buffalo = ...
buffalo.remoteCall("service1.method1")
buffalo.remoteCall("service1.method2")
buffalo.remoteCall("service2.method3")

运行时他会按照先后顺序来执行。

之前有相关讨论:http://groups.google.com/group/amowa/browse_thread/thread/47ad3a74899c979f/0e423edd1739fee6?lnk=gst&q=%E9%A1%BA%E5%BA%8F&rnum=3#0e423edd1739fee6
   
0 请登录后投票
时间:2007-05-10
不会吧。我试了很久了。

比如说
         var END_POINT_VPDN="/BUFFALO";
		 var buffaloVpdn = null;
	function setContextPathVpdn(path){
	      END_POINT_VPDN = path+ END_POINT_VPDN;
	     buffaloVpdn = new Buffalo(END_POINT_VPDN);
	}
	
         function getTypeOption(){
              //在这里getLeveltime里的下拉单总是不被执行,应该是说被下面addVpdn代替
                //我都改为同步这时两个都可以显示,或者buffaloVpdn改成不一样的对像。
		getLeveltime();
		addVpdn();
	}
	function getLeveltime(){
		buffaloVpdn.bindReply("commonOrder.VpdnLevelTime",[],"LEVEL");
	}
	function addVpdn(){
		buffaloVpdn.bindReply("commonOrder.VpdnLevel",[],"LEVELTYPE");	
	}
   
0 请登录后投票
时间:2007-05-10
看起来你没有使用最新版本?

在buffalo-demo war里面有个test.jsp, 测试了先后顺序调用的情况,供参考。
   
0 请登录后投票
时间:2007-05-18
mechiland 写道
看起来你没有使用最新版本?

在buffalo-demo war里面有个test.jsp, 测试了先后顺序调用的情况,供参考。


我还是用1.1的.

不敢轻意改吧..目前因为是做电信应用项目.有4个省份.怕改起来麻烦呀....

有没有什么办法.在1.1的版本里实现这个功能呢...请指点一下,谢谢.
   
0 请登录后投票
论坛首页 AJAX版 Buffalo

跳转论坛:
JavaEye推荐