1. Distrubuted objectes are said to help balance performance, but in fact they usually do not。 Besides, they often make the system harder to build or deploy
2. Remote interfaces has to be different from local ones in order to reduce calls. If you choose a middleware to make them transprent, which means you’d use only one interface, you have to choose the remote interface, which seems to be ugly and may violate OO rules
3. Fowler’s First Rule of Distributed Object Design: don’t distribute your objects. Use clustering instead. Put all classes in a single process and run multiple copies of it on various nodes
4. If you have to distribute your objects, forget about transparency. Define remote interfaces as few as you can, and try to keep other interfaces fine-grained