Google Sitebricks Web Framework

JSF和Wicket主要隐藏了Http,把Http打入了底层,用桌面的设计思维如: Events, components 和widgets 来和用户的点击事件交互。而Sitebricks直接基于Http,类似REST精神,暴露Http,而不是隐藏。

我个人以前在帖子里也嘀咕过JSF这种模式,现在都是WOA,都在向Web学习, 而JSF则是让Web向桌面Swing学习,倒行逆施吧,Web世界是多大的一个信息技术世界,不是你几个SUN公司或 IBM公司以及微软所有天才设计师加在一起就能抵得过的。但是我们更多企业程序员屁颠颠参加这些IT厂商 的各种所谓技术发布会,被一些忽悠概念误导,真正技术就很简单,就在你每天使用的浏览器中。

我在Spring被收购时,也指出其一个缺点,就是没有跟上REST大势,果真现在很具有RESTful的Web框架终于出来了,虽然我们更看好基于RIA的Restful的Web框架,不过Sitebrick探索也让我们感觉非常有冲击力。

Sitebricks = MVC + RESTful + Google Guice

用Sitebricks写一个MVC的Controller如下,很类似REST框架的Resource类:


@At("/blogs") //URL
public class Blogs {
private Blog newBlog = new Blog();
private List<Blog> blogs;

@Post
//http的POST操作
public void postEntry() {
...save(newBlog);
return
"/blogs";
//重定向到 '/blogs' as a GET ,就是下面这个方法}

@Get
//http的GET 返回Blog列表
public void listBlogs() {
this.blogs = .. ;
//fetch from store
}
}



Sitebricks的 templating layer建立类似面向功能语言functional language, 允许你以一种简单明了方式进行页面组合Compose。每个页由 Html模板和POJO两个部分组成。如:

<html>
<body>
@ShowIf(true)
<p>${message} from Sitebricks!</p>
</body>
</html>


Sitebricks作者指出了现有Web框架陷入了怪异的误区,导致Javascript等AJAX无法正常顺利使用(左撇子),而Sitebricks由于基于干净的html,所以对AJAX能很正常支持,这也是我至今喜欢用Struts1.x的原因,它简单的Jsp/html页面和Javascript能够天然融合。

所以,盲目跟风,最后反复伤害的是自己,表面上,自己学习了一个新框架使用,其实可能是学了一个垃圾,浪费精力,有这个时间少加点班,多陪陪家人女朋友呢。关键是要有自己的架构主见思维,可惜不以为然人太多。

Sitebricks目前处于alpha版本,虽然没有正式版本,但是至少让我们明白现有表现层框架Struts 1/2 JSF和Wicket的不足:
http://code.google.com/p/google-sitebricks/

INFQ采访录:
Google Sitebricks Web Framework - Q&A with Dhanji Prasanna
[该贴被banq于2009-09-28 15:06修改过]
[该贴被admin于2009-09-28 16:05修改过]

好像是收编了wrap 框架。。。

Web层有状态与无状态,我坚决支持Web层无状态,尽量连Session也少用.越简单的MVC越好.

但我们产品还是用Wicket.就因为目前来看,用Wicket之类的框架,更容易让普通的程序员更快进入项目中.复杂的控件之类的都可以封装好.Jsf应该也是类似的思路,主要是适合更多人一起上,用人力解决一些不太漂亮的代码的问题.


当然,我现在也烦透了Wicket的生命周期管理,当然也烦透了JSF的生命周期管理,包括它们对于AJAX的封装.

Sitebricks :
View层自己搞一套,还用Annotation,不知道如何保证书写正确?
写点JavaScript调用后端json或者html结果会累死人呀(jQuery在html中注入event和内容都很容易)?
至少有FireBug这种方便调试的好东西。
[该贴被jamesqiu于2009-12-05 11:57修改过]

现在Sitebricks的文档太少,在国外的网站上都难以搜到,估计现在还没什么人用。