实现 Rational® Application Developer 的会话外观包括创建一个会话 bean,该会话 bean 封装一个或多个 CMP 实体 bean 的数据和逻辑属性。此会话 bean 与对应的 SDO(和会话 bean 一起创建)交互,并且是为表示在一个或多个 CMP 实体 bean 中指定的数据而定制的。创建会话 Bean 外观向导用于在 CMP 实体 bean 中生成注释,这些注释将用于生成会话 bean 外观。使用此向导,您可以用图表形式选择 CMP 实体 bean 及其全部或部分 CMP 属性和 CMR 字段以便包括在新的 SDO 中。结果是产生一个引用对应的 SDO 图表并与将 EJB-QL 用于任何持久性查询的 EJBMediator 交互的会话 bean 实例。
有关用于定义会话 bean 外观和 SDO 的 @ws.sdo 和 @ws.sbf 标记集合的参考信息,请参阅会话外观和 SDO 的注释。
数据对象最初设计为一种将实际数据缓存在客户机应用程序业务层上的方法。示例为数据访问对象,它是抽象化并封装不同来源数据的标准方法。
服务数据对象(SDO)是从 CMP 实体 bean 中获取其属性的一类数据对象。它们可以将一个或多个 CMP 实体 bean 的部分单独容器管理关系(CMR)属性封装在单个对象中,从而允许客户机应用程序和业务层之间较粗粒度的事务。数据图表监视对数据的更改,该图表管理一个或多个 SDO,而中间层上的数据介体服务则管理与客户机的数据传输。
通常,会话外观用于缓解由客户机层和业务层应用程序与对象紧密耦合所导致的复杂性和性能问题。传统的分布式企业应用程序使用向客户机层显示业务数据和逻辑的企业 bean,其中会话 bean 用于过程,实体 bean 用于表示数据。
对于较大的应用程序,这样做的一个结果是客户机层与业务层的交互增多,而且业务逻辑的复杂性会越来越严重地拖累客户机应用程序。因此,客户机必须了解全部业务逻辑和数据,然后适当地做出响应。
维护客户机和服务器之间的数据完整性可能会很容易地成为一项巨大的任务,它要求通过增加与客户机的网络调用数目以及扩展客户机程序自身的复杂性来实现客户机与服务器的同步。
会话外观是作为消除许多这些情况的方法而引进的,它通过不让客户机处理数据来实现这一目标。所采用的方法是通过为 CMP 实体 bean 创建会话外观,它将会从业务层接收到抽象化的数据以及此数据必需的业务方法。数据交换现在可以由介体(通常是 EJB 机制本身的 CMP 设施)来处理。客户机现在可以仅使用这些方法和数据表示,而且不再对数据完整性和全部业务逻辑的一致性负责。
然而,传统的会话外观实现具有一些局限性。即使高级应用程序可能涉及来自多个 CMP 定义的数据,但是您只能对给定的会话外观使用单个实体 bean 实例。这将会导致客户机和业务层之间有许多相对细粒度的网络调用,从而可能会造成网络性能下降。