Thursday, August 2, 2007

pureMVC Coarse-grained interface concept

in doc:
it's said :
Mediator and Proxies should expose coarse-grained interface to
commands( and each other ), that hides the implementation of
their stewarded View component or Data model


Fine-grained PO一般来说管理着持久数据与表列的一对一映射. Coarse-grained PO通过多个Fine-grained PO 来管理持久数据. 这样, 属于Coarse-grained中的Fine-grained PO, 其生命期受制于Coarse-grained PO, 超过了Coarse-grained PO生命期的Fine-grained PO是没有意义的, 因为它们是做为一个整体出现的. 另外, 客户只能通过Coarse-grained PO来间接的访问其中的Fine-grained PO.
因为Coarse-grained是做为一个整体出现的, 所以Lazy initialization是不可能的, 对Coarse-grained来说, 要么一起装入, 要么什么也不装入, 一起装入也就造成了较长的响应时间, 另外, Coarse-grained也会影响我们写程序时运用inheritance 和 polymorphism(这一点, 希望能得到其它朋友的见解)
EJB就其本身只能做成一种Coarse-grained PO(Sun网站上也不得不这样说), 而Hibernate PO 则可以做成Fine-grained 和Coarse-grained, 显然选择的余地多.


Fine-grained和Coarse-grained 一般是指远程方法调用的接口的颗粒大小.
比如, 我有一个远程对象, 他有很多属性和对应的getter和setter方法,
如果我们远程调用对象每个属性的getter和setter方法, 就会产生很多远程方法调用. 这就是Fine-grained interface, 会造成性能问题

所以我们可以用一个setdata或getdata的方法把一些属性的访问封装起来, 只用一个远程方法传输一个data transfer object来对该对象进行赋值和访问, 这就是Coarse-grained interface

No comments: