《远程调用合并使用_田锋涛》由会员分享,可在线阅读,更多相关《远程调用合并使用_田锋涛(2页珍藏版)》请在金锄头文库上搜索。
1、 NC 供应链第 1 页 共 3 页远程调用合并的原理与应用远程调用合并的原理与应用田锋涛 2012-06-07关键词:关键词:远程调用,合并,打包1. 背景简介背景简介远程调用即客户端对服务器的访问。考虑到效率问题(连接数) ,NC 产品对 远程调用有着严格的控制,为了减少对服务器的访问(即减少连接数) ,使用了 远程调用合并的方式。2. 原理与应用原理与应用2.1. 原理原理远程调用合并基本思路是,把要远程访问的业务规则(或业务方法)放在一 起,通过一次远程调用,实现各个业务规则访问服务器的功能。远程调用合并的 实现方式,采用了 Java 服务代理的思路。 平台远程调用合并的入口类为: n
2、c.vo.util.remotecallcombination.RemoteCallCombinatorEx,其核心方法有 3 个: public T getService(Class clazz) public Object getResult(Token token) public Token getToken()业务组使用时大致分以下几步: 通过 getService 方法注册自己的查询服务; 组织参数,调用此服务的相关方法(注意:此时并未真正执行该服务,二是 把服务及方法、参数等存储起来,为后续一次性调用做准备) ; 通过 getResult 方法获取结果,根据传入 Token 的不同
3、,可获取不同服务的 操作结果,后续可以根据此结果进行相应业务处理(注意:只要执行一次 getResult 方法,远程合并器就会把所注册的服务一次性抛到后台统一执行) 。远程调用合并一般在前台的业务处理中,如编辑事件,按钮事件等。需要注 意的是,远程合并调用的各个调用之间不能有业务上的依赖关系。NC 供应链第 2 页 共 3 页2.2. 应用举例应用举例参考代码可见 nc.vo.pu.pub.rule.BusitypeFillRule,如下:public class BusitypeFillRule implements IPURemoteCallCombinator private IKeyV
4、alue billhelper;private String billtype;private Token token;/* param billhelper* param billtype*/public BusitypeFillRule(IKeyValue billhelper, String billtype) super();this.billhelper = billhelper;this.billtype = billtype;public void prepare() RemoteCallCombinatorEx rcc = RemoteCallCombinatorEx.getI
5、nstance();if (this.token != null) rcc.update(this.token);String para = this.getQueryPara();this.token =PfServiceScmUtil.register_getBusitype(this.billtype, para0, para1,para2);public void process() String para = this.getQueryPara();String busitype =PfServiceScmUtil.getBusitype(this.billtype, para0, para1, para2,this.token);this.billhelper.setHeadValue(PUQueryConst.PK_BUSITYPE, busitype);private String getQueryPara() return NC 供应链第 3 页 共 3 页