`
sagah
  • 浏览: 3916 次
  • 性别: Icon_minigender_1
  • 来自: 萧山
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何更高效的在层与层之间调用

阅读更多

      遇到一个新的框架,分为Action,AO,BO,DAO,Service这几层。Action层基于CoC。AO,BO,DAO又使用的是Spring管理的。Action与AO间使用的名称调用,如:


private String AOName = "cpsMyAuctionAO";

。。。。。

Result result = executeCommand(AOName, "createCpsMyAuction", param);


cpsMyAuctionAO就是action要调用的AO,param是入参,createCpsMyAuction是需要调用的方法。

result就是执行的结果了。


看了底层的代码,是通过一个CommandDispatcherSelector来读取上下文,并通过参数调用AO。但是对于调用的管理难度加大了,当类多起来的,查找之间的关系很困难。请问各位高手有什么更好的解决办法?

分享到:
评论
16 楼 gloomyd 2008-12-02  
这个框架出来的时候  好像spring还没有怎么兴起
在国内也不怎么出名
所以没有采用spring的
15 楼 bnulz 2008-12-02  
我觉得抛开框架不说,JavaEE一直充斥着 command模式
表示层来说,请求的url就是命令而对应的就是解释器action
数据访问,sql就是命令,数据库就是解释器
我们分层,我们不把sql直接写在jsp上,不把业务逻辑都封装在pl-sql中,
我觉得就是因为解释器是脆弱的,随着业务的改变而变动的,但使用命令的角色无法预知。正如楼主提出的,你修改了AO这个业务解释器但无法知道他都解释了action里的
哪些命令。

btw ,taobao这种解决问题的氛围是非常好的!
14 楼 sagah 2008-12-02  
spyker 写道

fnet 写道这还用说,Spring的依赖注入就是最好的。使用Annotation注入更好。


我不喜欢annotation注入
还是觉得xml配置set注入好点

annotation虽然使用方便,但是维护起来并不是很舒服。问题有点像该帖。既然能在一个配置文件内看到所有和维护所有的依赖关系是我最习惯的。
13 楼 lovingprince 2008-12-02  
呵呵,偶一眼就看出来是淘宝的兄弟了,哈哈。看到那分层结构就猜到一二了,再看到WEBX。。。,那不用说了,100%是,呵呵
12 楼 sdh5724 2008-12-02  
----------一个架构而已, 老子改不就行了, 天天思考这个问题, 我快疯了。 用现在的眼光看5-6年前的设计是否足够优秀是不妥当的。
11 楼 fnet 2008-12-02  
这还用说,Spring的依赖注入就是最好的。使用Annotation注入更好。
10 楼 stone2083 2008-12-02  
在不了解一家公司需求背景和规模的前提下,在不了解AO/BO所充当的真正角色的前提下,妄下结论,说是过渡设计。这是不负责任的。
在了解业务规模以及了解AO/BO/DAO的真正含义之后,我不觉得这是过渡设计的问题。

现在最大的问题是,
1)新人不了解AO/BO充当的角色,内部培训没有做好,反倒要在外网上讨论这个问题。这是不应该的--当然,我们对AO/BO也确实没有一个明确的定义;
2)对于AO的管理,也有待明确;
3)web层调用AO的方式,有待改进,太麻烦了--当然不是说command模式不好--它确实灵活,可以使web层和service层分离部署。
9 楼 yunsong 2008-12-02  
这个框架作的项目,如果项目有大量的维护工作,而且人员不是很稳定的话,维护人员会比价累
8 楼 icewubin 2008-12-02  
sagah 写道
    我觉得并不是什么过度设计,框架已经实现了CoC。实际使用效果也不错,能较方便的快速开发,只是代码累积到今天,对维护带来了不便。因为现在还没有很好的CoC的解决框架。考虑该框架是在n年前的作品,有问题是正常的。我们还是着眼于如何解决该问题。
    我重新说一下问题,如果我修改了cpsMyAuctionAO,我无法能很快知道有哪些action使用了cpsMyAuctionAO。


简直就是为了CoC而CoC,既然Java不够动态语言那么简洁,适当使用一些通用配置没什么不好的,有时候在追求最后1%的完美的时候,付出的各方面的代价都很大的。
7 楼 sdh5724 2008-12-02  
AO(业务对象)的管理是个问题.WEBX能在多年前做出来的东西,主要关注的是WEB框架,并没有考虑到业务框架, 这个是我们最大的失败. WEBX做出来开始, 是超越当时很多框架对WEB的处理能力, 最根本的原因是当初框架的实践是来自一线开发的意见, webx的代码质量非常可靠, . 这么多年过去了, 落伍了在所难免, 很多局限, 不熟悉的人很难架设新的应用, 陷井也不少.
6 楼 sagah 2008-12-01  
    我觉得并不是什么过度设计,框架已经实现了CoC。实际使用效果也不错,能较方便的快速开发,只是代码累积到今天,对维护带来了不便。因为现在还没有很好的CoC的解决框架。考虑该框架是在n年前的作品,有问题是正常的。我们还是着眼于如何解决该问题。
    我重新说一下问题,如果我修改了cpsMyAuctionAO,我无法能很快知道有哪些action使用了cpsMyAuctionAO。
5 楼 daquan198163 2008-12-01  
见过过度设计,没见过这么过度的,或者该叫过分设计,哈哈哈
4 楼 sagah 2008-12-01  
sdh5724 写道

内部讨论这个问题吧, 实际上, 如果你在B2B, 这是我造成的问题. 惭愧.
我们在明年开始解决着个COMMAND设计模式造成的问题.

好几年了,这个问题是该框架一直无法解决的问题。虽然有许多的问题,但是这个框架仍然值得称道。作者宝宝果然是大牛。我也期待你们能尽早解决这个问题。同时也希望网上的各位大侠提出宝贵的意见。
3 楼 sdh5724 2008-12-01  
内部讨论这个问题吧, 实际上, 如果你在B2B, 这是我造成的问题. 惭愧.
我们在明年开始解决着个COMMAND设计模式造成的问题.
2 楼 sagah 2008-12-01  
是web框架,问题在于action调service。因为除action都是在spring的上下文可以管理。但是action是基于0配置的。没有办法直接引入上下文。所以原有的设计者才使CommandDispatcher建立起action和下层的桥梁。但是CommandDispatcher是使用名称调用的。这个才是问题所在。
1 楼 sagah 2008-12-01  
AO是业务逻辑组装,BO负责单一的业务逻辑,AO+BO相当月ssh中的service层。都是在spring框架内管理的。

相关推荐

    NDK开发so层与java代码相互调用

    JNI是Java和本地代码之间的桥梁,它定义了一套接口,使得Java代码可以通过这些接口调用本地函数,反之亦然。 ### 创建本地方法 创建本地方法需要以下步骤: 1. **定义JNI接口**:在Java类中声明本地方法,但不实现...

    LINUX的系统调用与函数调用.pdf

    系统调用作为用户层和核心层之间的桥梁,使得应用程序能够安全、有序地访问系统资源。 在Linux系统中,系统调用通常是通过C语言的函数库形式来使用的。这意味着程序员可以像调用普通函数一样调用系统调用,如`open...

    JNI中C层调用Java层函数

    通过声明`native`方法、生成C头文件、编写C代码以及编译动态链接库,我们可以实现C层调用Java层函数,从而在两个层面之间灵活地交换数据和控制流程。在这个示例工程中,你可以进一步学习和实践这些步骤,加深对JNI的...

    asp.net三层 jquery调用后台数据例子

    在三层架构中,BLL作为表示层和数据访问层之间的桥梁,处理复杂的业务操作。 3. 数据访问层(Data Access Layer, DAL):这一层专注于数据库交互,如查询、插入、更新和删除数据。它通常通过ADO.NET或其他ORM(对象...

    Android各个层次之间的相互关系

    在Android操作系统中,应用程序的执行和交互涉及到多个层次的组件,这些层次之间的关系构成了Android系统的架构。...通过深入学习这些层次,开发者能够设计出更高效、更稳定、更适应Android系统特性的应用程序。

    2000_Delphi最新三层源码_delphi三层架构_DELPHI三层_三层_源码

    2. **DAO层(Data Access Objects层)**:这一层位于数据连接层之上,是业务逻辑层与数据库之间的桥梁。DAO层封装了数据库操作的具体细节,提供了一组接口或类供上层调用,如数据增删改查(CRUD)操作。这样做的好处...

    android 与 lua 相互调用

    本文将深入探讨Android与Lua之间的相互调用机制,以及如何在实际项目中实现这一功能。 首先,让我们了解Lua。Lua是一种轻量级的脚本语言,其语法简洁且易于学习,适用于嵌入式系统和游戏开发。它提供了丰富的数据...

    远程调用服务框架

    在远程调用服务方面,Spring通过服务抽象层,如ServiceRepository,简化了客户端对远程服务的调用。ServiceRepository作为一个服务仓库,存储了服务的元数据,允许客户端通过服务ID和服务接口来查找和调用相应的服务...

    接口调用jar包

    在IT行业中,接口调用是系统之间进行通信的常见方式,尤其在分布式系统或微服务架构中尤为关键。jar包,全称为Java Archive,是Java编程语言中的库文件格式,用于封装类、资源和元数据,便于代码复用和部署。在本...

    专题三:操作系统知识

    - **分层视角**:从系统构建的角度来看,操作系统被划分为多个层次,每一层都有特定的功能,且层与层之间相互依赖。 #### 3. 操作系统的硬件基础 - **中断**:操作系统通过中断机制实现对外部事件的响应,中断处理...

    驱动和应用层的三种通信方式

    在计算机系统中,驱动程序和应用层之间进行通信是实现硬件功能和软件交互的关键环节。本文将详细探讨驱动和应用层之间的三种主要通信方式:系统调用、消息队列以及直接内存访问(DMA)。 首先,系统调用是驱动与...

    多层体系结构开发模式

    - 在通用层,我们可以创建一个Publisher实体类,用于在不同层之间传递和表示Publishers表中的数据。 总的来说,多层体系结构开发模式通过明确的职责划分,使得开发团队可以更高效地协作,同时降低了系统的复杂性。...

    java方法调用

    方法调用有两种主要方式:在一个类内部的方法调用与不同类之间的方法调用。目前我们先聚焦于一个类内部的方法调用。 ##### 1. 类内部的方法调用 在同一个类内部,方法调用相对简单。方法调用的语法取决于方法是否...

    C#调用java直接调用无需生成.net组件

    本主题聚焦于"C#调用java",探讨如何在C#应用中直接调用Java代码,而无需通过生成.NET组件来实现这一目标。这样的做法能带来更高的稳定性和速度。 首先,我们需要理解的是,C#和Java属于两种不同的编程语言,它们...

    windows 驱动 应用层与驱动层通信(读、写文件) 源码

    Windows驱动程序框架(WDF)和Windows驱动模型(WDM)是两种常见的驱动开发接口,用于实现应用层与驱动层之间的通信。本篇将深入探讨这两种框架下的读写文件操作以及IOCONTROL机制。 首先,我们来看一下应用层与...

    Android上层与驱动交互完整篇(APK->JNI->HAL->DRV)

    JNI是Java和C/C++之间的桥梁,它允许Java代码在需要时调用本地方法,从而实现与硬件驱动的低级交互。JNI接口定义了Java和C/C++之间的数据类型转换规则,以及函数调用方式,确保了跨语言的兼容性。 接下来是HAL层,...

    最新三层架构设计源码

    - **解耦**:各层之间有明确的接口定义,减少了层与层之间的依赖,使得修改某一层不会影响其他层。 - **可复用性**:由于各层的独立性,可以单独重用某个层的代码,比如BLL可以在多个项目中复用。 - **可测试性**:...

    Vb.net三层架构

    - **松耦合**:各层之间有明确的接口,改变一层不会影响其他层,提高了代码的可维护性和可扩展性。 - **模块化**:每一层都可以独立开发和测试,降低了开发复杂度。 - **复用性**:业务逻辑层可以被多个界面调用,...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    ### Spring框架在中间层的应用与整合 #### 一、Spring框架概述 Spring是一个开源的轻量级Java EE框架,主要用于简化企业级应用的开发过程。它通过提供一系列的基础设施服务,如依赖注入(Dependency Injection, DI...

    Python-高效的RPC命令调用框架

    在本主题中,我们将重点讨论基于zerorpc和gevent的高效RPC命令调用框架。zerorpc是一个Python实现的轻量级RPC库,它基于msgpack作为序列化协议,而gevent是一个强大的事件驱动库,通过协程实现高效的并发。 首先,...

Global site tag (gtag.js) - Google Analytics