随着这些天来对RAILS的
学习,渐渐感受着ROR开发快速所带来的欣喜,可是在这惊喜过后也自然把它跟JAVA架构做了一些比较.
gM$S7o6}{H5t0 这些天来最大的感觉就是,JAVA的架构比ROR要"干净"的多.而这里的"干净"与"不干净"实际上却正是我接触OO以来在一个含混不清的问题,归根结底就是面向对象里面"类的封装范围".Wish-Space7A E lo]9hx;b
v#F.e
X^a3rg2g0 记得在以前刚开始学习OO的时候就说"类可以封装一系列属性和方法".好,那时候经常以Persion来做例子,人有身高有体重,有爱好有性格,这些都是属性,人还能吃饭能睡觉,这些是方法,好了,这些都是人的特征,所以都被"人"这个类来封装.多么完美的OO,我们简直是在创造世界!可是现实通常却不像想的那么完美,我想上帝创造世界的工作也一定不是一件轻松的事情.我们的系统通常要具有分布性,对象应该可以在不同的机器上传来传去,那好,为了这样的要求,在J2EE的架构设计中,常常要把M这一层再分为静态层和动态层两个层次,这样也就有了我们的service和domain以及他们之间的dao.软件设计中,通常是通过引入一个中间层来解决一些问题,而我们这里引入的中间层把"静"和"动"分开了.我想这里不仅仅是为了解决分布的问题,通常经验还告诉我们,"动"的部分改变的几率是远远大于"静"的.所以用OO来把这"动"和"静"分别封装.可这又跟我们刚开始的类设计理论似乎有些不一样了,不过,这样的设计是为了实际而做的牺牲还是对OO的活学活用呢?恐怕说出来也会是人们一个争论的话题吧.
he-?{m9i;m
h$D0Wish-Space7O'z5HA%p[a{o 而ROR似乎对OO更友好,学过OO的人很容易就能理解它,它的model封装了静和动两部分,包括一些验证的操作都放在model里面了,根本不分service和domain这两部分.这一切都符合我们刚开始所学到的OO,可是~有了对JAVA的理解和使用经验,我越来越觉得,跟JAVA相比这分明是一种"肮脏",混杂的类设计.不过,这样做也是有它的道理的,ROR里面的对象可以分布传输吗?分布传输过去的对象,里面的方法还可以调用吗?如果这个方法访问了本地资源,这一调用出错了怎么办?这一切的解决方法,可能就是"不让对象分布出去"吧,至少我现在还没有在ROR上看到有讲类似RMI和EJB级别的东西,它似乎是用WEB SERVICE来代替这些作为分布的解决方案,可是上面那些问题在WEB SERVICE中是怎么做的,我就没有研究过了.
"R&j4m'Vz-G+{m02U.?] ]0M n1b0c0 上面的一些话只是现阶段的一些个人感觉,也不排除随着对ROR的学习深入而有所改变的可能.Wish-Space6_Wc U/t9L