J2EE提供了对分布式的支持,能够将应用程序的不同的组件发布到不同的JVM中,无论这些JVM是在同一台服务器上还是在不同的服务器上。分布式的J2EE应用程序的基础是带有远程接口的EJB。
但是,这个支持带来了一个误解:J2EE应用程序就必须是分布式的。
很多人认为分布式的应用程序是提供健壮的、可扩展的应用程序的唯一方法。这个观点是有疑问的,我们同样可以将所有的组件都发布在同一个JVM中,然后将多个这样的JVM做一个集群。
分布式的架构带来以下的好处:
1 能够使一个中间层被多个客户端共享。这个中间层通常是业务对象,而客户端可能是不同的类型的客户端。
2 可以将任何一个组件安装在任何一个物理的服务器上。在某些应用程序中,这一点对于负载均衡是很重要的。
同时,分布式架构也带来很多的问题,尤其是以下几点:
1. 性能问题:远程调用比本地调用要慢很多。
2. 复杂度的问题:分布式的应用程序难以开发、调试、部署、维护。
3. 对OOD的约束:由于分布式的特点,对OOD会带来约束。
分布式的应用程序会带来很多挑战。因此,如果没有必要,应该尽量避免采用分布式的设计。