对于本书之中的案例系统来说,前面提到的业务需求比较简单,使用PB、Delphi、JBuilder等提供的数据敏感组件可以在很短时间内开发出一个可用的系统来。但是本书不会采用这种简单的开发方式,而是要构建一个多层的分布式系统框架,主要基于如下两点考虑:
l 本书是讲解J2EE开发的,所以必须以一个集成了先进设计思想的系统为案例讲解才可以使读者得到尽可能多的知识,这是最大的动因。
l 目前的案例系统的需求非常简单,但是如果架构设计合理,以后完全可以基于这个技术架构进行更多的业务扩展,最终发展成为一个集生产管理、供应链管理、财务管理、客户管理、HR管理等多业务模块,并能处理跨地区、跨组织的大型企业信息系统。
6.1 概 述
分布式技术是处理客户端与服务器之间资源分配的技术,它解决的问题包括失败转发、负载平衡、分布式事务、Session共享等。
分布式系统通常是由多台实现相同功能的服务器同时提供服务,客户端的请求可以根据一定的负载平衡算法被转发到负载较轻的服务器上去,这样就提高了各个服务器的利用率和系统的整体吞吐量;当一台服务器发生故障时,其他服务器会接管这个服务器正在执行的操作,继续为客户端提供服务。使用分布式技术带来的好处主要是提高了系统的稳定性和吞吐量。
多层架构把系统分成数据访问层,业务规则层等多个层次。每个层次都向其他层次提供服务,服务使用者无须关心服务的实现,这样各个层次之间可以责任明确地、相互协调地完成系统任务。各个层之间只通过约定的接口提供服务,服务的实现方式是调用者无须关心的,这样任何一层内部的修改不会蔓延到其他模块,从而最大限度地减少了需求变化时对系统的影响。多层架构带来的好处就是解耦了系统,使各个模块之间的依赖变小,系统更容易理解、修改和扩展。
在Java中,分布式技术常常是和多层架构同时出现的,分布式技术的使用会自然而然地导致系统的分层设计。比如使用EJB后会很自然地将系统分成三层甚至更多层。分布式系统开发中的经验也被借鉴到分层开发中来,从而使得分层更加合理,以至于很多没有采用分布式技术的多层架构系统中也可以找到分布式技术的影子。采用了分层结构设计的分布式系统就被称为多层分布式系统,在Java世界中又经常被简称为分布式系统。本书将会沿用这种说法。
经过多年的发展,分布式技术已经日趋成熟,在各个平台都有了成熟的实现,比如Windows平台下的DCom、Com+、.NET技术体系,Java平台下的EJB,跨平台的Corba、Webservice等。
在Java平台下,EJB无疑是最成熟的分布式技术,它解决了安全性、负载平衡、分布式事务、数据持久化等很多核心问题。但EJB的缺点是应用程序的运行必须依靠EJB服务器,需要编写部署描述符,并且每次修改都要重新编写部署描述符并部署到应用服务器上去,必要的时候还要重启服务器;EJB服务器运行时启动很多开发时无用的组件,占用了大量的系统内存,这给系统的开发人员带来了诸多的不便,开发效率变得非常低。
Rod Johnson在使用EJB进行开发过程中逐渐认识到了EJB的这些缺点,在《Expert One-on-One J2EE Design and Development》一书中从实用的角度重新认识了EJB等技术在J2EE开发中的作用,也催生出了优秀的J2EE框架SpringFramework。SpringFramework、Hibernate等“草根”框架的流行给了EJB这个“皇家规范”以很大的压力,EJB也在向这些框架学习,甚至邀请这些框架的作者参与EJB的改进,从EJB3的规范中就可以看到这一点。






