ServiceFramework:效率堪比Rails的超敏捷Java開發框架

openkk 12年前發布 | 24K 次閱讀 Java Web框架

ServcieFramework是一個敏捷、快速、富領域模型的Java MVC 框架,其設計理念是讓用戶真正能夠用最簡單的方式解決80%的問題,這是框架應有的原則和價值。但目前很多Java框架為了追求框架本身的完美和擴展性而忽略了這些原則。

ServiceFramework 是為了快速開發而生的,其非常強調開發的高效性,其開發效率可以比肩Rails(不相信?可以體驗一下):

  • 擁有Java界最簡單、非常高效且真正的富Model層
  • Controller層含有便利的函數庫、簡潔高效的驗證器和過濾器
  • 簡單但實用的View層,天然支持JSON、XMl格式輸出

因此,ServcieFramework 更加適合移動互聯網后端開發,這也是該框架的主要定位。

ServcieFramework的特性

目前大部分互聯網應用是以數據為中心的,尤其是關系型數據庫。所以如果能簡化數據操作,便能有效減少代碼。

所以我們參照Rails ActiveRecord 對模型類做了完善的充血實現。這其中絕對沒有因為Java是靜態語言導致的一些限制而做任何妥協。后面示例我們可以看到這一點。

核心優勢是,Model方面真正實現了Java的充血模型,Query使用了ActiveRecord的風格。相信我,沒有任何妥協。舉個例子:

從 Form 到 Model 再到 DB:

Order order = Order.create(params());
if(order.save()){
  render(ok())
}
else{
  render(HTTP_403,"參數錯誤");
}

下面是一個很優秀的、被Play所推薦的ORM框架Ebean的Query Interface。調用方式如下:

Ebean.find(Order.class)  
                .fetch("details")  
                .setMaxRows(100)  
                .where().eq("status",Order.Status.NEW)  
                .order().desc("id")  
                .findList();  

說說幾點:

  1. 模型類還是被人操作來操作去,比如需要Ebean操作Order 模型。
  2. 鏈式關系比較詭異,有層級關系。比如 where()下有eq()等。

再看看ServiceFramework的query interface:

 List<Order> orders = Order.where("status=:status",map("status",Order.Status.NEW))
                            .joins("details")
                            .limit(100)
                            .order("id desc")
                            .fetch();

實際應用中通常會這樣使用:

@Entity
  class Order extends Model
  {
     public static JPQL status_new(){
       return where("status=:status",map("status",Order.Status.NEW));
     }
  }

  List<Order> orders = Order.status_new()
                            .joins("details")
                            .limit(100)
                            .order("id desc")
                            .fetch();

簡單直觀,非常自然地以SQL關鍵字區分,沒有任何學習成本,都是按程序員最直觀的方式進行。

其實不僅僅是Model層,controller層的設計也極盡簡化。我們也對過濾器(攔截器)做了重新實現,這不同于一般的(如Struts2)的實現。同時我們還提出了一個理念,在Controller層應該提供一個函數庫,就像PHP那樣。當然,我們現在只是提供一些比較實用的函數。但是以后會慢慢添加。

此外還有一些小特點,譬如:

  • 一站式,不需要你整合各個框架;
  • 隨時clone隨時使用,看十分鐘wiki便能著手開發;
  • 你不用考慮項目結構;
  • 你不用考慮如何分層;
  • 你不需要考慮配置文件,我們提供一個統一的配置對象供你使用;
  • 我們盡量使用一些最佳實踐來組織項目。比如使用IOC做基礎。這意味著,你大部分類都會自動被容器所管理。

使用后你會發現,該框架將Rails的靈活性帶到了Java平臺,歡迎Rails開發者回歸Java。^-^

轉自:http://www.iteye.com/news/25793

項目主頁:http://www.baiduhome.net/lib/view/home/1345174093178

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!