Google Sitebricks Web Framework

09-09-28 banq
         

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修改过]

         

1
hantsy
2009-10-28 13:53

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

saharabear
2009-11-21 13:00

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

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

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

jamesqiu
2009-12-05 11:54

Sitebricks :

View层自己搞一套,还用Annotation,不知道如何保证书写正确?

写点JavaScript调用后端json或者html结果会累死人呀(jQuery在html中注入event和内容都很容易)?

至少有FireBug这种方便调试的好东西。

[该贴被jamesqiu于2009-12-05 11:57修改过]

yangzhan
2010-02-05 18:37

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