ROR和OO

10-09-09 jeffrey4chartcrm
因为公司的安排,最近开始接触ROR的开发,刚刚上手一个月,把遇到的问题罗列出来跟大家讨论讨论。

1. 没有仔细的学习ruby,只是粗略的看了一下语法,接着就直接学习ROR,或者说直接从《Agile Web Development with Rails》这本书开始学习。ROR是一个DDD的框架,但是这本书中的例子都是先从设计数据表开始,感觉这样做跟OO有冲突,至少在ORM的时候跟hibernate等框架的方向是相反的。

2. ROR实现了MVC,甚至是严格执行MVC。ROR 消除了service层和dao层,导致一些本应该属于service的行为向两边渗透(controller层和model层) ,把本不该属于model的一些行为都强加到model身上,这样做就造成了充血模型,甚至是胀血模型的形成。Controllers也会显得非常臃肿。

好了,问题来了。

对于1,是不是ROR的开发都是基于数据库驱动的,用OO驱动开发要怎么开始?

对于2,我们是不是可以加入service层,把分层做的更加合理。但这样做是不是会破坏ror号称的快速简便?

nojava
2010-09-09 15:05
SJB

beepbug
2010-09-11 04:53
首先,你得弄清,你今后主要打算从事哪类计算软件的开发,是科学计算(少量数据,复杂计算)、数据处理(巨量数据,简单计算)、实时控制,或其它。

如果是数据处理(大多数计算属于这一类),你必须围绕数据做文章,得先安排好数据,然后考虑数据的处理(也就是编码)。在编码时,才有是不是OO的问题。

数据设计,这一层面还没完成,何来OO?在软件开发中,OO是很后来的东西。

banq
2010-09-11 07:55
2010年09月09日 11:23 "jeffrey4chartcrm"的内容
是不是ROR的开发都是基于数据库驱动的,用OO驱动开发要怎么开始 ...

首先,ROR本身出发点是不想基于数据库驱动的,它有自己的ORM,但是ROR离DDD很远。ROR没有引导DDD。数据库思路的人可以用它来开发面向数据库的程序,就象你看到的那本书一样。

如果加入Service层,那就是比较复杂的系统,需要以SOA角度来看,业务不再是CRUD这些基本操作,需要以服务来对外展示,那么是不是就破坏了ROR原来的快捷简便。

看看真正的DDD开发框架:

基于EDA和CQRS的拍卖案例

[该贴被banq于2010-09-11 07:57修改过]

猜你喜欢