阅读更多

ServiceFramework是一个敏捷、快速、富领域模型的Java MVC 框架,其设计理念是让用户真正能够用最简单的方式解决80%的问题,这是框架应有的原则和价值。但目前很多Java框架为了追求框架本身的完美和扩展性而忽略了这些原则。

 

项目地址:https://github.com/allwefantasy/ServiceFramework

 

ServiceFramework 是为了快速开发而生的,其非常强调开发的高效性,其开发效率可以比肩Rails(不相信?可以体验一下):

 

  • 拥有Java界最简单、非常高效且真正的富Model层
  • Controller层含有便利的函数库、简洁高效的验证器和过滤器
  • 简单但实用的View层,天然支持JSON、XMl格式输出

因此,ServiceFramework更加适合移动互联网后端开发,这也是该框架的主要定位。

 

ServiceFramework的特性

 

目前大部分互联网应用是以数据为中心的,尤其是关系型数据库。所以如果能简化数据操作,便能有效减少代码。

 

所以我们参照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。^-^

 

项目地址:https://github.com/allwefantasy/ServiceFramework

 

 

29
12
评论 共 106 条 请登录后发表评论
86 楼 yidao620c 2012-08-18 15:16
damoqiongqiu 写道
ray_linn 写道
theoffspring 写道
ray_linn 写道
theoffspring 写道
ray_linn 写道
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。

玩的时间长短和掌握的程度有关系吗


mvc, orm, 能不能折腾点新玩意,天天折腾这些没营养的框架,每一个能成事的,还不如好好弄弄django,rails,就是.net mvc也比这些狗皮倒灶的强

你就这个水平?mvc,orm是很重要的东西,.net的不过也是模仿java的东西,rails研究过,写得够烂的,约定的东西太多,乱七八糟的。


你这种大脑短路的绝不适合搞it.要是 rails 那么烂,这个所谓的serviceframework 干嘛需要在标题里写上效率堪比rails? 你那所谓的研究就是写2个 hello,world 就以为自己精通这个,精通那个。。

能不能不要见人就咬?看你这素质差的,我勒个去

框架之争为何屡禁不止呢?
85 楼 damoqiongqiu 2012-08-18 14:01
ray_linn 写道
theoffspring 写道
ray_linn 写道
theoffspring 写道
ray_linn 写道
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。

玩的时间长短和掌握的程度有关系吗


mvc, orm, 能不能折腾点新玩意,天天折腾这些没营养的框架,每一个能成事的,还不如好好弄弄django,rails,就是.net mvc也比这些狗皮倒灶的强

你就这个水平?mvc,orm是很重要的东西,.net的不过也是模仿java的东西,rails研究过,写得够烂的,约定的东西太多,乱七八糟的。


你这种大脑短路的绝不适合搞it.要是 rails 那么烂,这个所谓的serviceframework 干嘛需要在标题里写上效率堪比rails? 你那所谓的研究就是写2个 hello,world 就以为自己精通这个,精通那个。。

能不能不要见人就咬?看你这素质差的,我勒个去
84 楼 ray_linn 2012-08-18 13:50
theoffspring 写道
ray_linn 写道
theoffspring 写道
ray_linn 写道
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。

玩的时间长短和掌握的程度有关系吗


mvc, orm, 能不能折腾点新玩意,天天折腾这些没营养的框架,每一个能成事的,还不如好好弄弄django,rails,就是.net mvc也比这些狗皮倒灶的强

你就这个水平?mvc,orm是很重要的东西,.net的不过也是模仿java的东西,rails研究过,写得够烂的,约定的东西太多,乱七八糟的。


你这种大脑短路的绝不适合搞it.要是 rails 那么烂,这个所谓的serviceframework 干嘛需要在标题里写上效率堪比rails? 你那所谓的研究就是写2个 hello,world 就以为自己精通这个,精通那个。。
83 楼 theoffspring 2012-08-18 09:05
ray_linn 写道
theoffspring 写道
ray_linn 写道
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。

玩的时间长短和掌握的程度有关系吗


mvc, orm, 能不能折腾点新玩意,天天折腾这些没营养的框架,每一个能成事的,还不如好好弄弄django,rails,就是.net mvc也比这些狗皮倒灶的强

你就这个水平?mvc,orm是很重要的东西,.net的不过也是模仿java的东西,rails研究过,写得够烂的,约定的东西太多,乱七八糟的。
82 楼 ray_linn 2012-08-17 23:09
theoffspring 写道
ray_linn 写道
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。

玩的时间长短和掌握的程度有关系吗


mvc, orm, 能不能折腾点新玩意,天天折腾这些没营养的框架,每一个能成事的,还不如好好弄弄django,rails,就是.net mvc也比这些狗皮倒灶的强
81 楼 theoffspring 2012-08-17 22:26
ray_linn 写道
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。

玩的时间长短和掌握的程度有关系吗
80 楼 allwefantasy 2012-08-17 18:53
rjbj 写道
想问一下,这个框架对于较大规模,业务较复杂的项目应用起来会不会有什么问题?

你觉得会有什么问题呢?
79 楼 yangguo 2012-08-17 17:59
一直在寻找一个优雅的充血模型,不知道能否在这里找到。强烈支持。
先研究一下。
78 楼 chenlei1728 2012-08-17 16:39
中国有这种个人的东西,是非常的不错的,个人支持!!!
77 楼 rjbj 2012-08-17 16:34
想问一下,这个框架对于较大规模,业务较复杂的项目应用起来会不会有什么问题?
76 楼 aninfeel 2012-08-17 13:37
daxiong921 写道
kimmking 写道
有没有支持scala的web框架?


playframe 2
75 楼 allwefantasy 2012-08-17 13:21
amonlei 写道
堪比。。。。同样的地方你贴段rails 代码看看,要比就比 play framework,比rails ,差远了

呵呵 你应该是个Rails程序员。可以看看Wiki的.然后在对比下。
74 楼 零++ 2012-08-17 13:21
amonlei 写道
堪比。。。。同样的地方你贴段rails 代码看看,要比就比 play framework,比rails ,差远了

所以语言还是很重要的。。搞这些不如直接学ruby多好,非要jvm就jruby也行啊,为啥要重复造轮子
73 楼 amonlei 2012-08-17 12:41
堪比。。。。同样的地方你贴段rails 代码看看,要比就比 play framework,比rails ,差远了
72 楼 bcw104 2012-08-17 09:48
daxiong921 写道
kimmking 写道
有没有支持scala的web框架?


play2啊
71 楼 BusyAnt 2012-08-16 23:05
作者认为不适合企业应用的地方在哪里?
70 楼 ray_linn 2012-08-16 20:23
damoqiongqiu 写道
ray_linn 写道
offbye 写道
为什么不用Spring ROO


Java 语言天生残疾。

我去,没文化的喷子又出现了


偶玩 Java 的时候,你还在幼儿园沙子和尿玩呢。井底蛤蟆,你见过多大个天。小白一只。
69 楼 daxiong921 2012-08-16 18:01
kimmking 写道
有没有支持scala的web框架?

68 楼 allwefantasy 2012-08-16 17:39
kingxip 写道
怎么新建一个项目? 怎么导入到ide(eclipse)里面? 折腾累了。

可怜的额孩子....
ide最简单,你直接 使用 create project from exsising sources.基本就么有问题的。不需要做任何设置。

eclipse 就是把src目录marked as source ,把lib加入classpath.

不过话说回来,这个项目就是一个普通的Java项目。一个src,一个lib.让后有个Application文件里面有个main方法。所以,应该知道怎么弄了吧?哈哈
67 楼 kingxip 2012-08-16 17:22
怎么新建一个项目? 怎么导入到ide(eclipse)里面? 折腾累了。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics