世说新语 发表于 2013-1-23 02:58:53

Restful让我束手束脚

在Rails中View+Controller+Helper是紧耦合的,Controller中的方法与相关目录下的view template一一对应;Model+Migration+DB是紧耦合的。这2大块之间是松耦合的。


这2块的内部组织方式是完全不同的:
对于Model层,我们通常会对业务进行OO分析,提取出一些名词和名词之间的关系,然后把他们映射成Model,这个过程比较直观,是相对细粒度的。
对于View层,我们要考虑的是用户怎么用着舒服,为了用户的方便,页面可能很简单,也可能很复杂,一个页面可能包含多个Form,一个Controller也可能调用多个Model的功能对view提供支持,它是对Model的一个全新的组织,是相对粗粒度的。我们有可能把几个相互关联的Model组织到同一个View+Controller里面集中的向用户展示。

http://www.agoit.com/upload/attachment/56904/dc4581ca-a00a-3e24-aa1d-6abe2899a125.bmp
 如果没有Restful,一切工作的很好,URL我爱怎么写就怎么写,全看个人习惯。但是现在Restful来了,一句 map.resources 给了我们7个URL。看看这个
map.resources :articles 
问题是这句话假定我们有一个名为ArticlesController的控制器,这无形中把ArticlesController的功能限制为对某一项资源的CRUD。


<!----><!----><!---->
想象一下这个场景,我要录入一篇Article,然后查询系统中已有的author(作者),把这篇artile与某个author关联起来。也就是在Add an article页面还要添加search author的功能,OK,问题来了,search_author这个方法我放哪?ArtilesController吗?你得自己添加map.connect,这似乎违反了restful,ArtilesController要处理另外一个资源的CRUD。AuthorsController吗?AuthorsController怎么关联到别的Controller的view? Controller是不是一定要和View一一对应?
 

http://www.agoit.com/upload/attachment/56929/19aa4966-0c80-32d7-8701-0978d4c6b437.bmp

<!----><!----><!---->
我觉得应该是我对restful的理解还不够深入,但至少现在我觉得restful给我带来严重的限制。
 
页: [1]
查看完整版本: Restful让我束手束脚