Aptana Jaxer:The Ajax Server?

我要留言

一直以来都在用Aptana的Editor来编辑Javascript/CSS/HTML,都挺好。今天尝试了Aptana自己一直在推的所谓‘世界上第一个Ajax Server的Jaxer

在Jaxar里面写code倒是很有意思,所有你需要做的事情就是写Javascript/CSS/HTML。你根本不需要使用任何其他server-side语言,所有的事情就是写Javascript就可以了。来看一个例子:


 <script type="text/javascript" runat="server">
	function getAuthenticatedUser()
	{
		var username = Jaxer.session.get("username");
		if (typeof username == "undefined") return null;
		var rs = Jaxer.DB.execute("SELECT * FROM users WHERE username = ?", [username]);
		if (rs.rows.length == 0)
		{
			return null;
		}
		return rs.rows[0];
	}
</script>

用‘runat=server’就可以让上面对数据库的操作运行在server端,而client端对该方法的调用不变,这样在写Web应用时就不用在Server side和client side两边跑来跑去了。并且还有对template的支持。

这个和原来老毛和科长做的project zero client programming model是非常相似的,目的是都用来屏蔽client和server之间的boundary。不过Jaxar做的更加彻底,通过扩展Apache的server,加入自己的Server side framework和client side framework,让所有的一切都通过写JS就搞定了。并且对session,database, web ,SMTP 进行支持,对于一般的应用差不多就够了。老毛原来做的也是通过加入client framework以及扩展server的一些能力来让开发者在client和server之间进行无缝交互。可惜还是需要写Javascript和groovy,并且有一大堆的convention,不知道为什么没有发展下去(又是政治问题?).

那么这种开发模式到底好不好呢?我觉得对于比较小的应用,不考虑扩展和与外界交互,还是一个比较快捷的开发方式。毕竟client和server的无缝交互所带来的好处是非常大的,比如说学习的门槛低(只需要知道一个Javascript就搞定了), 数据传输中麻烦的异步调用,编码,解码,格式转换等等都将消失。但是一旦你的web应用大一些的时候,我想这种模式就面临着很大的问题。关键还是不容易扩展,当它把UI和数据逻辑混合的时候,要做分离是比较困难的。当然你可以在它的编程模型上写一层数据操作层,但是这样就变成了典型的RPC了。另外,这样做并不REST,Jaxer开发出来的应用根本提供不了service(更谈不上RESTful),这样就无法被它人所用了。如果Jaxer应用以后要做整合,那绝对是一个大麻烦。

Tags: ,

10 Responses to “Aptana Jaxer:The Ajax Server?”

  1. pizza

    runat=”server”…让我想起了.net呵呵
    把sql语句写在页面里是不是不大好啊…

  2. liwenbing

    恩,这样说来安全对它来说也是一个大问题。

  3. tommychang

    呵呵,看看JavascriptMVC这个框架吧,它把js的逻辑和视图分离得还算不错,可能这样要好些。
    ps:如果Aptana能支持想JSEclipse那样的相同关键字高亮就perfect了…

  4. liwenbing

    http://javascriptmvc.com/吗?我怎么访问不了

  5. vsky

    像JS这么一种解释型语言,如果把数据库逻辑暴露在里面始终觉得不安全,而且现在很多服务端的开发都是基于框架的,数据层都已经被完全抽象了。
    而且过多的把客户端和服务端逻辑混到一块了,个人觉得这样确实很难扩展。
    如果只是为了方便客户端开发,个人觉得完全可以自己写死数据接口,以模拟服务端的返回。

  6. liwenbing

    对于”写死数据接口“,我更喜欢说是”定义数据接口“。在Web的世界里面,如何来暴露接口是一个有意思的问题。现在都是通过暴露RESTful的接口,google和其他的很多websites也提供了很多Javascript的接口。这些都是一种趋势。其实Jaxer把对数据的操作也移到前台也是有一定的考虑,但是如果是我来做Jaxer的话,我会在在提供RESTful的数据操作方式,而不是写sql。
    例如:

  7. Annis

    Good for people to know.

  8. edielei

    你们都还不知道它的工作原理。runat=server 的JavaScript代码不会暴露在客户端的。它很安全。

  9. liwenbing

    那就是还是需要在server side去解析的。只是脚本语言使用的是server side JavaScript了。
    这些让我想起了MS的AJAX.NET, 在某些地方有相识之初。

  10. Anonymous

    TO 楼上那些不懂的同学们:
      从你们的话语中就可以看出你们对于Jaxer没有一点点的了解,所以请不要胡乱去评论它
      人家很明白的说了Runat = server,那么说明这些代码只能在服务端执行,在客户端你所能看见的只是服务端处理以后的数据,SQL或者其它一些敏感的东西在客户端都是看不到的。同时,由于前后台一体化,所以前台能使用的那些框架,比如jquery?mootools?ext?都可以在服务端直接使用,只要在引入这些框架的时候加一个runat=both就可以轻松使用了。
      aptana现在已经可以自定义JS文件,你可以把自己常用的JS框架之类的加入进去,以后用aptana写js的时候它就会自动进行关键字高亮,函数提醒之类的了。

Leave a Reply

Spam Protection by WP-SpamFree