`
心动音符
  • 浏览: 342343 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

J2EE业务层模式--传输对象组装器

阅读更多
问题:

  需要获取一个应用模型,但是这个模型中包括了来自多个不同组件的传输对象。

  应用系统的客户端经常需要从业务层获取业务数据,然后要么这些数据显示出来,要么执行一些中间处理。应用模型代表着封装在业务层业务组件中的业务数据。如果客户端需要应用模型数据的话,就必须从各不同的数据源(比如业务对象、数据访问对象、应用服务以及业务层的其他对象)中定位、访问或者模型的各个部分。这种做法会产生以下几个问题:

--如果让客户端直接访问一个层次中的组件,就会在不同层次之间造成耦合。由于这种紧耦合的存在,如果修改了业务层的组件,也就会在各个客户端中间产生连锁反应。客户端代码复杂性也增加了,因为客户端必须要和多种业务组件交互,并且那些用于构造应用模型的业务逻辑也被放进了客户端代码中。

--另外,不同的客户端为了获取、构造模型的数据,都要实现一些相似的逻辑,这也增加了系统维护的工作量。如果客户端访问业务组件式分布式的远程组件,那么性能也会随之下降,因为客户端必须越过网络访问多个业务组件才能获得全部的业务模型数据。

   约束:

   要集中封装业务逻辑,避免在客户端实现这些逻辑

   在构造业务层对象模型的数据时,尽量减少对远程对象的网络调用。

   创建一个复杂模型,并交给客户端,用于界面的显示

   要对客户端隐藏模型实现的复杂性,而且还想降低客户端与业务组件之间的耦合。

解决方案:

  使用传输对象组装器,以复合传输对象的形式构件应用模型。传输对象组装器从各种不同的业务组件和业务服务中聚合多个传输对象,并且最后把复合传输对象返回给客户端。

  传输对象组装器从业务组件中获取传输对象,然后,传输对象组装器对这些传输对象进行处理,创建并组装一个体现了应用模型数据的复合传输对象。客户端使用传输对象组装器来获取只读的应用模型,以供显示或者其他中间处理之用。客户端并不修改复合传输对象中的数据。

  前面讲过,业务对象也能够使用封装在它本身中的数据生成复合传输对象。另一个方面传输对象组装器则从不同多种数据源<比如业务对象、会话门面、应用服务、数据访问对象以及其他各种服务>获取数据。传输对象组装器可以使用服务定器来定位业务服务组件。

效果:

1、分离了业务逻辑,简化了客户端逻辑

   如果客户端包括一些与分布式组件交互的处理逻辑,那么就很难清晰的把业务逻辑同客户端层截然分开来。传输对象组装器包含了用于维护对象关系的业务逻辑,以及用于构造符合模型的复合传输对象的业务逻辑,这样客户端就不需要知道如何构造模型,也不需要了解为这个复合模型提供数据的多个组件。

2、减少了客户端和应用逻辑之间的耦合

  传输对象组装器对客户端隐藏了构造模型数据的复杂性,降低了客户端和模型之间的耦合,在这种松耦合的情况下,如果模型发生了变化,只需要传输对象组装器相应的改变就OK乐,这样一来,就能对客户端隐藏模型的这种变化。

3、提高了系统的网络性能

传输对象组装器减少了从业务层获取应用模型所需的调用次数,因为通常只需一次方法调用就能获取应用模型。但是这个复合传输对象可能包含大量的数据。这也就意味着,虽然使用传输对象组装器能够减少网络调用次数,但是一次调用中传输的数量增加了,在使用这个模式的时候,应该权衡考虑这个代价。

4、提高了客户端的性能

服务器端的传输对象组装器无需使用任何客户端的资源,就能以复合传输对象的形式构造模型数据。在组装模型的过程中,客户端没有消耗任何资源。

5、可能会引入失效的数据

传输对象组装器按照需要,以复合传输对象的形式构造应用模型,而数据来源则是业务模型当前撞期的一个快照。客户端获得了复合传输对象之后,这个对象就在客户端本地上了,与原本的数据之间不存在网络联系,所以,如果在业务组件发生了后续改动,这种改动也不会传播到客户端的应用个模型数据上。因此这些应用模型数据在客户端获取之后可能会失去时效性。
分享到:
评论

相关推荐

    J2EE Patterns

    - **传输对象组装器**(Transfer Object Assembler):组装传输对象。 - **值列表处理器**(Value List Handler):处理值列表的逻辑。 #### 集成层模式 集成层模式关注于如何将J2EE应用与其他系统或服务进行有效...

    浅谈J2EE框架和分布式网络管理.pdf

    2. 业务层:在J2EE中,业务层是通过Spring Framework实现的,它提供了面向切面的编程(AOP)和依赖注入(DI)等特性,有助于实现业务组件的组装和关联。Spring框架通过轻量级容器管理业务逻辑对象的生命周期,使得...

    构建高性能J2EE应用的10个技巧

    1. **数据传输对象模式**:将多个属性封装到一个数据传输对象中,通过一次远程调用来传递所有的数据,减少网络交互。 2. **性能提升**:相比于多次调用get/set方法,这种方式能够大幅减少网络开销,提高系统响应速度...

    J2EE测试题(答案).doc

    J2EE的核心概念是多层次的分布式应用模型,这种模型将应用逻辑分解为多个层次,包括客户端、Web层、业务逻辑层和服务层等,每个层次都有特定的服务器和组件,如Servlet、EJB等,它们在各自的容器中运行,并通过各种...

    软考系统架构设计师笔记精心整理 .docx

    - **构造器模式**:对象组装。 - **原型模式**:对象复制。 **11.2 结构型模式** - **适配器模式**:接口兼容。 - **外观模式**:简化接口。 - **代理模式**:对象代理。 - **桥接**:解耦合。 - **装饰**:动态...

    生产调度管理信息系统解决方案.doc

    业务逻辑层只关心业务逻辑,应设计成线程安全,大部分应该是单例模式,本项目用 JavaBean 来实现业务逻辑层功能。事务控制采用 JTA 在业务逻辑层进行控制,其它各层禁止使用事务控制。 数据服务层:数据服务层主要...

    EJB3核心规范中文版V1.0

    - **实体bean**:用于表示持久化的业务对象,支持实体管理操作。 - **消息驱动bean**:用于处理异步消息。 - **会话bean**:分为有状态会话bean和无状态会态bean两种。无状态会话bean在每个调用之间不会保留状态...

    Java.CAPS.Basics.Implementing.Common.EAI.Patterns

    书中还介绍了如何生成和使用加密对象,包括但不限于数字签名、加密解密等功能,以确保消息的安全传输。 #### 结论 《Java™ CAPS 基础知识:实现常见的EAI模式》是一本实用性强、内容丰富的指南,它不仅适合那些...

    全国信息化工程师.doc

    该考试涵盖了信息化工程师的多个方面,包括数据通信基础、OSI/RM 七层功能、局域网技术、网络互联设备和多层交换、网络操作系统、计算模式等理论知识。 系统管理证书获得者掌握了数据通信基础、OSI/RM 七层功能、...

Global site tag (gtag.js) - Google Analytics