Google Sitebricks Web Framework

banq發表於2009-09-28
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修改過]

相關文章