分层设计的软件系统,由于把相似功能的类或组件放在同一层里。所以好的分层系统应该具备:层的内部“高内聚”,层与层之间是“松耦合”的。只有符合这样的一个设计原则的软件系统,才能具有可复用性和可扩展性。因此,降低层间“耦合度”就成软件设计的目标,能够设计出“松耦合”的系统,就意味着我们的系统具备可复用性和可扩展性,这样的系统就能够满足的用户不断变化的需求。从设计角度我们可以将一个应用系统(一般是信息系统)分成四层结构如图所示。接下来我们将一一介绍各层之间的含义。


四层体系结构介绍_ejb


表示层


表示层是用户与系统交互的组件集合,用户通过这一层向系统提交请求或发出指令,系统通过这一层接收用户请求或指令,然后,根据请求指令调用服务层,再根据调用的结果,将相应的内容展现到表示层。表示层应该是轻薄的,不应该具有业务逻辑。如果我们的系统是一个 Web 系统的话,我们采用的技术有 HTML 、 JSP 和 Servlet 等,也可以使用 MVC 框架,例如 Struts 等框架技术。这时我们将表示层称为 Web 层更准确一点。无论采用什么技术表示层都应该是轻薄的,不应该具有业务逻辑。也就是说无论我们使用 JSP 、 Servlet 作为表示层还是使用 Swing 作为表示层都应该是轻薄的。


服务层


服务层是系统的核心业务处理层,负责接收表示层的指令和数据,根据业务逻辑的需要调用相应的持久层,并将结果返回给表示层。为了降低表示层和服务层的耦合问题,我们会在两层之间引入接口,然后在运行期注入依赖关系。服务层一般使用的技术有会话 EJB 、消息 EJB 和 JavaBean 。


数据持久层


数据持久层用于访问数据库,数据持久层中一般是通过 DAO (数据访问对象设计模式)访问数据库的,也是为了降低耦合度, DAO 被设计为接口, DAO 实现可以是 JDBC ,也可以使用一些 ORM 框架如 Hibernate 等。除了使用 DAO 以外,我们也可以使用 EJB 中的实体 EJB 实现数据持久化。


EIS层


EIS 层即企业信息系统层,是系统的数据来源层。它们可以是数据库、文件和其它的系统,多数情况下是指的是数据库。